Cosmos

Preguntas frecuentes / Casos prácticos

  1. ¿De qué manera automática se pueden ver los valores en un listado?

    Haciendo "PrintVars" sobre los valores que queramos ver.

  2. ¿Qué hay que hacer para que salga el carácter de coma (",") como separador de miles?

    Definir la variable de entorno "DBMONEY=." o bien modificar en la configuración regional del equipo el símbolo decimal.

  3. ¿Cómo hacer un tratamiento dinámico de selección de tablas?

    Creando un método que construya la SELECT a partir del catálogo y utilizando "ArgList".

  4. ¿Hay que tener joins diferentes para tener columnas de "lookup" y "foreign key"?

    No, con uno solo es suficiente.

  5. Al realizar un preview de impresión no se ven más que 10 páginas. ¿Es éste el número máximo de páginas que se pueden ver?

    No. Para establecer el número de páginas a previsualizar hay que emplear el método "SetBufferPages" de la clase "PrnDocument".

  6. Al emplear una variable "pseudo" en un "grid" repite el mismo valor en todas las filas. ¿Esto es realmente así?

    No. El motivo es que la variable se ha establecido como variable local del FORM. Esta variable debería estar creada para la tabla, de esta manera nos iría mostrando valores diferentes.

  7. En un equipo funciona correctamente la aplicación en modo cliente-servidor. Sin embargo, en otro equipo aparece el mensaje: "unknown host".

    Definir el la variable DBHOST el nombre del servidor o bien su dirección IP.

  8. ¿Cómo acceder en cada momento a las variables de entorno si tenemos distintas conexiones?

    Con el método GetValue de la clase SqlServer.

  9. En un listado, cuando una línea de detalle no cabe físicamente en una línea, ¿es posible dividirla en varias?

    Sí, en cajas con varias páginas o bandas.

  10. Normalmente aparece una ventana que indica el número de registros que se han recuperado. ¿Se podría eliminar dicha ventana?

    Dicha ventana es utilizada por Cosmos para mostrar el número de filas que se han recuperado, y lo normal es que aparezca. No obstante, se puede evitar su aparición con la variable de entorno "QueryProgressWindow".

  11. ¿Hay posibilidad de recoger el resultado de una SELECT en un ARGLIST?

    Sí, declarando el "ArgList" como parámetro de un método y pasándole tantas variables como valores queramos recoger. Ahora bien, la SELECT se tiene que ejecutar dentro del método donde ha sido definido el "ArgList", debiendo coincidir, además, los tipos de dato.

  12. ¿Existe en Cosmos alguna función similar a la "procid" de MultiBase?

    No. Lo que puede hacer es simular el número con el método RANDOM.

  13. ¿Cómo se puede definir un literal que incluya texto entre comillas dobles?

    Utilizando comillas simples para delimitar el contenido del literal. Por ejemplo: 'select * from tabla where nombre= "minombre" '.

  14. ¿Qué hay que hacer para utilizar a la vez una "box" asociada a una tabla y un control "tab" sobre la misma?

    Incluir el control "tab" dentro de la "box". De esta forma el "tab" usará la misma tabla que la "box".

  15. ¿Qué tipo de variable hay que definir para poder ordenar el contenido de una "drop list"?

    Una variable definida de tipo General.

  16. ¿Hay que hacer algo especial para utilizar el método QueryLike?

    Hay que estar en modo no-edición.

  17. ¿Qué es lo primero que hay que hacer para utilizar los controles "ActiveX" en Cosmos?

    Disponer de los ficheros que contengan los controles y tenerlos registrados, y, si es posible, los ficheros de ayuda para saber los métodos, eventos y propiedades que se pueden utilizar.

  18. ¿Cómo se puede hacer una ventana no modal?

    Abrir el FORM con el método "Open" y generar un bucle mientras que el formulario esté abierto (método "Hisopeen"), ejecutando dentro del bucle el método "Yield" (para que Windows gestione los mensajes que tenga pendientes).

    También se puede crear el objeto en la sección "objects" del módulo y, antes de ejecutarlo, cargarlo en memoria.

  19. ¿Cómo usar una "drop list" sin tener una base de datos?

    Crear la "drop list" y asignarle un número de "Tags". A continuación, crear una variable de tipo enumerado y darle el mismo número de valores que a los "Tags" del control.

  20. Las opciones de un menú "pulldown" aparecen hacia arriba en lugar de hacerlo hacia abajo.

    Añadir el menú como "pulldown" ("Screen Layout").

  21. ¿Cómo poner en una "drop list" todos los nombres de los subdirectorios ".dbs" de un determinado directorio?

    Se pueden utilizar los métodos de la clase module: OpenDir, ReadDir y CloseDir, y después añadir los nombres de los directorios a la lista con "AddString".

  22. ¿Cómo definir un conjunto de variables para que sean como los campos de una tabla?

    Con una "struct like table".

  23. ¿Cómo validar el valor de los controles?

    Se puede realizar de dos formas:

    • Con el método "OnExit" de los controles.
    • Utilizando la propiedad "CheckMethod" del control gráfico.
  24. ¿Qué evento puede capturar el cambio de fila activa de una "grid"?

    El "RowChanged" de la tabla que gestiona el "grid".

  25. ¿Se puede quitar la columna de la izquierda de una "grid"?

    Mediante los atributos "Rows Number" y "Arrows".

  26. ¿Se puede ocultar una pestaña de un "Tab Control"?

    Sí, utilizando el método HidePage.

  27. En una "ListBox", al seleccionar un campo que en el repositorio es un "link" a un campo de otra tabla se obtiene la clave primaria de la tabla sobre la que se hace el "link". ¿Cómo se puede evitar esto?

    En este caso no se puede hacer por los "links". Habrá que ejecutar una instrucción SELECT y, si queremos sacar campos de varias tablas, tendremos que enlazarlas.

  28. Teniendo definidos como aceleradores las teclas de los cursores, éstas no funcionan en las "window select". ¿Cómo se puede evitar?

    No se puede, ya que los aceleradores redefinen las teclas del cursor y a partir de ese momento dejan de funcionar en una "window select".

  29. ¿Con qué métodos podemos tratar los errores en Cosmos?

    Con los métodos "Error" y "SqlError" y con el evento "Error".

  30. ¿Puede Cosmos trabajar vía ODBC?

    Sí.