Cosmos

Preguntas frecuentes / Casos prácticos

  1. ¿De qué manera se puede asociar un char(1) a un "check box"?

    Definiendo el campo como "booleano".

  2. Hemos creado una "view" de una SELECT de varias tablas. ¿Se puede hacer una SELECT de dicha "view"?

    Sí, pero al crear la "view" tenemos que darle las columnas que van a formar parte de ella.

  3. ¿Se pueden enviar varios parámetros a un módulo desde la línea de comandos del "cosrun"?

    No, solamente se puede pasar un parámetro por módulo.

  4. No funciona el "QueryEnd". ¿A qué es debido?

    A que está activa la variable de entorno QUERYBUFFERING. Desactivarla.

  5. En un Control ActiveX, ¿para qué sirve la clase "event"?

    Para poder controlar sus eventos.

  6. ¿Cómo se pueden poner "labels" a un grupo?

    Con la propiedad "Label" del grupo. Si las variables están dentro del "grupo", también valen las "labels" de las variables. Si éstas están dentro de una "caja", y ésta a su vez dentro del grupo, se pueden definir las "labels" en la caja.

  7. ¿Cómo ejecutar el "EditNew" nada más entrar al formulario?

    Poniendo en "On Open" del formulario:

    <tabla>.EditNew

  8. ¿Existe algún método que devuelva la fecha y hora de modificación de un fichero?

    Sí, el método GetFileDate de la clase Module. Este método se implementó en la versión 3.9 de Cosmos.

  9. ¿Se puede pasar un "char" a un "decimal"?

    Sí, el "char" ha de estar formateado. Reemplazar los puntos por "" y la coma por un punto.

  10. ¿De qué forma se puede saber qué usuarios están conectados en un servidor UNIX en cliente-servidor?
    • Utilizando el comando UNIX: ps -ef |grep <nombre del servicio: PEJ:ctsql>
    • Utilizando el monitor de sql.
  11. Dada una tabla con un "char(5)" y el atributo "rigth", introducimos unas filas con la siguiente información: "1", "2" y "10". Al hacer una SELECT sobre la tabla ordenando por esa columna, aparecen de la siguiente manera "1", "10" y "2". ¿Por qué?

    Porque estamos ordenando cadenas de caracteres y no números.

  12. Intentamos hacer un "Update" con el método "Select" en un programa, pero éste no funciona. ¿Por qué?

    Porque se está haciendo con el método "Select", cuando lo correcto sería hacerlo con el "SqlExec".

  13. ¿Se pueden utilizar GIFs animados en Cosmos?

    No.

  14. ¿Existe algún comando en Cosmos que simule el "Query" de MultiBase?

    Sí, el comando "QueryLike".

  15. ¿Se puede cambiar una columna de tipo "serial" a numérico y viceversa?

    Se puede cambiar de "serial" a "integer" sin problemas. Sin embargo, para cambiar de "integer" a "serial" hay que descargar todas las columnas de la tabla, menos la "serial", borrarla y crearla con el tipo de dato "serial" y, por último, realizar la carga de la tabla.

  16. Tenemos una clase derivada de "ArgList" Decimal. ¿Se puede definir un objeto derivado de esa clase en la sección "objects"?

    No.

  17. ¿Existe algún método para saber sin una fila está bloqueada dentro de un FORM?

    No. Lo que se puede hacer es declarar un CURSOR, leer la fila y ver si está bloqueada o ejecutar la aplicación Monitor que muestra los registros y tablas bloqueadas.

  18. Al imprimir etiquetas, ¿qué se puede hacer para que vayan saliendo por la impresora sin tener que esperar al final?

    Hay que utilizar el método "WritePage" en lugar del "SendPage".

  19. ¿Se puede asociar una tabla temporal a un "grid"?

    Sí. Para ello hay que crear una "template" en el repositorio con la estructura de la tabla y asociarla al "grid".

  20. ¿Se puede acceder a los "tags" del repositorio?

    Sí, utilizando la "rep.dll".

  21. ¿Cómo se hace para utilizar los parámetros que se pasan en la "main" dentro de un FORM?

    Asignándolos a un objeto global o bien pasarlos al FORM de la siguiente manera:

    nombre.objeto = objeto

  22. ¿Se puede dar el mismo nombre a un parámetro y a una variable local?

    No, ya que comparten el mismo ámbito.

  23. Al hacer un "update" de un campo con el método "Prepare" de la clase "SqlCursor" se produce un error sintáctico. ¿Por qué?

    Porque el método "Prepare" que hay que utilizar es el de la clase "SqlStatement".

  24. ¿Se puede declarar un CURSOR "for update" de una instrucción SELECT preparada?

    Sí, para ello hay que incluir la cláusula FOR UPDATE en la instrucción PREPARE de la instrucción SELECT y darle un nombre al CURSOR con el método "Púntame" si queremos realizar actualizaciones sobre dicho CURSOR.

  25. Al ejecutar una instrucción "Update" sobre una tabla aparece el siguiente mensaje: "faltan componentes en la clave".

    No se hace un UPDATE sobre columnas que tienen el atributo "no update".

  26. ¿Qué manera rápida hay de saber el número de filas de una tabla?

    Ejecutando la instrucción "Update statistics for table" y a continuación una SELECT por la columna "nrows" de la tabla del catálogo "systables" de la tabla en cuestión.

  27. ¿Se puede saber si un "AcceptEdit" que graba una tabla desde un FORM ha tenido éxito o no?

    Hay que controlar esto antes de hacer el "AcceptEdit". Existen dos estados ("metodo Status") dentro de una tabla: "New" y "Browse". Si el estado es "New" es que se está dando un alta, y en ese momento controlaríamos la existencia o no de la fila a grabar.

  28. ¿Por qué puede ocurrir que, en un mantenimiento de una tabla a través de un "grid", al realizar la modificación de un registro, ésta no se lleve a cabo?

    Porque la tabla no tiene clave primaria.

  29. Tenemos un CURSOR dentro de un bucle y la condición de salida es la siguiente: "id_cursor.Fetch == false", pero no termina nunca. ¿Por qué?

    Porque hay que preguntar por "Found".

  30. En una base de datos transaccional, ¿en el fichero de log se guardan también las lecturas?

    No, sólo aquellas operaciones SQL que indiquen un cambio en la estructura o en los datos de la base de datos.