Cosmos

Preguntas frecuentes / Casos prácticos

  1. ¿Cómo hacer que el cursor del ratón sea un reloj?

    Utilizando el método "WaitCursor".

  2. ¿Podemos ocultar una columna de un "grid"?

    Con la propiedad invisible del control que esté en esa columna.

  3. Tenemos un "ListBox" en árbol y el evento "dobleClick" definido, pero sólo se ejecuta en los elementos hoja. ¿Esto es así?

    Efectivamente, ya que sobre los elementos "padre" se utiliza para desplegar o cerrar el nodo.

  4. ¿De qué forma se puede actualizar el año de una fecha por SQL?

    Con las funciones "mdy" y "Year".

  5. En una "include" tenemos definido un "OnCommand" que ejecuta una función que está dentro de esa "include". Desde un FORM que tiene este comando pulsamos sobre un botón y no sale nada.

    Los comandos siempre se asocian a botones, y éstos residen en un formulario. Si definimos el comando en un FORM abstracto y nuestro FORM no lo hereda de aquél, no se podrán usar los comandos.

  6. ¿De qué forma podemos minimizar el tiempo de carga de datos en una base de datos mediante la instrucción "Load"?

    Para reducir el tiempo de carga se pueden borrar los índices antes de hacer los "load" y crearlos al terminar. Para hacerlo de esta manera debemos estar seguros de que los datos a cargar respetan la integridad.

  7. ¿Cómo hacer una consulta indicando condiciones en campos de dos tablas a la vez?

    Se debe realizar con un FORM en paralelo.

  8. ¿Cómo cambiar en un menú la propiedad "checked" por programa de un FORM?

    Hay que hacerlo de la siguiente manera:

    <objeto clase form>.<menu>.<subnemú>………Checked = true

  9. Al generar un fichero ASCII con descarga de datos decimales, el separador de enteros y de decimales es la coma (,). Al utilizar la instrucción: "var_dec = cadena.substring().Decimal;" se produce un error de conversión.

    Hacer previamente un «PutEnv("DBMONEY", ".")» para que el separador sea el punto(.) en lugar de la coma (,); de esta forma generará el fichero correctamente. Al leer habrá que hacer un "Replace" de la coma por el punto.

  10. ¿Cómo ejecutar un comando de MS-DOS?

    Con los métodos "System" o "Exec".

  11. Al generar un listado con el Wizard, ¿podemos mover las columnas?

    Sí, para ello tendremos que meter una caja dentro del grupo y, dentro de ésta, las variables.

  12. ¿Cómo se puede definir un array?

    Definiendo una clase y después un objeto de dicha clase.

  13. ¿Cómo cambiar la ordenación en los Query?

    Usando el método "OrderBy" o indicándolo en las propiedades de la tabla.

  14. ¿Se puede evitar que al pasar el foco entre controles no pase a un botón determinado?

    Sí, quitando la propiedad "TabStop" a ese botón.

  15. ¿Cómo hacer que cambie el color de un "edit field" cuando recibe el foco?

    Utilizando el evento "On Enter" y la propiedad "Background" del "EditField".

  16. ¿Cómo se puede saber el estado de un FORM en modo edición?

    Con el método Status.

  17. ¿Se pueden utilizar componentes externos a Cosmos?

    Sí, utilizando la clase "Actives".

  18. ¿Cómo asociar una variable a un "Radio Button"?

    Definiendo en la variable tantos "values" como opciones tenga el "radio button".

  19. ¿Cómo se puede devolver el foco al control que lo tenía después de haber ejecutado una opción de menú?

    Guardando en una variable el nombre del control y utilizando luego la función "Control" con esa variable.

  20. ¿Cómo controlar los mensajes de las ventanas de error?

    Con el método "ErrorLevel" y el evento "On Error".

  21. En un FORM tenemos asociado un botón al comando "delete", redefinido en un Form Abstracto. Al ejecutar dicho botón no ejecuta el comando "delete" por defecto, mientras que con otros comandos sí funciona, y también desde un menú.

    Es posible que estemos ejecutando el comando "DELETE" de la clase "FORMTABLE", no así en el menú.

  22. En una tabla de aproximadamente 700.000 registros, declaramos un CURSOR seleccionando unas 40.000 filas. En la "control" de ese CURSOR realizamos un UPDATE de un campo que es índice. ¿Hay alguna forma de agilizar este proceso de actualización?

    Sí. Antes de iniciar el proceso, borrar el índice y volverlo a crear al final.

  23. ¿Por qué aparece el mensaje: "Imposible abrir fichero de mensajes" al reparar una tabla?

    Porque la variable de entorno TRANSDIR no está bien definida.

  24. ¿Cómo utilizar la función "Inwords"?

    Ha de estar declarada como una función de tipo "dll", pudiéndose utilizar entonces como una función normal.

  25. ¿Cómo utilizar dispositivos conectados a los puertos de comunicaciones?

    Con las funciones de la librería dinámica "UTIL32.dll" o bien con la clase Stream.

  26. En una "List Box" de tipo "Column List" ¿podemos saber el número de elementos de la lista?

    Sí, utilizando el método Count.

  27. No es posible conectarse a una base de datos ya creada; el mensaje de error que aparece es: "Base de datos no encontrada o sin permiso de sistema".

    Establecer correctamente el DBPATH en la conexión.

  28. En una base de datos cliente-servidor contra NT previamente creada, al pasarla a una máquina para trabajar en local se produce el siguiente error al intentar seleccionarla: "Imposible abrir catálogo (systables)". La base de datos es transaccional.

    Hay que crear un fichero de log en la máquina actual en la misma ruta donde estaba creado anteriormente.

  29. ¿Cómo se pueden asignar valores a posiciones determinadas de un "char"?, ya que la funcionalidad del operador [ ] no lo permite.

    El operador [ ] sólo sirve para obtener valores, no para asignarlos. Se puede utilizar el método ReplaceAt de la clase Char en versiones 3.4 y posteriores.

  30. ¿Cómo se puede quitar el fichero de log en una base de datos transaccional?

    Con la instrucción 'start database nombre_base with log in "" '.