Mostrar la estructura de una vista
Puede abrir y mostrar únicamente la estructura de una vista mediante la cláusula NODATA del comando USE. Esta opción resulta especialmente útil cuando se quiere ver la estructura de una vista remota sin tener que esperar a la descarga de datos.
Para abrir una vista sin datos
- Tenga acceso a la vista mediante programación con el comando USE y la cláusula NODATA.
El código siguiente muestra customer_remote_view
sin datos en una ventana Examinar:
OPEN DATABASE testdata
USE customer_remote_view NODATA in 0
BROWSE
El uso de una vista con la cláusula NODATA siempre abre un nuevo cursor de la vista. La cláusula NODATA es siempre el modo más rápido de obtener la estructura de una vista, porque crea el menor cursor posible en el origen de datos remoto. Cuando utilice la cláusula NODATA, Visual FoxPro creará una cláusula WHERE para la vista que siempre devolverá un valor falso. Puesto que ningún registro del origen de datos puede cumplir la condición de la cláusula WHERE, no se seleccionará ninguna fila en el cursor del origen de datos remoto. Su vista se recuperará rápidamente ya que no espera que el origen de datos remoto cree un cursor potencialmente grande.
Sugerencia El uso de la cláusula NODATA es más eficaz que usar un valor 0 para la propiedad MaxRecords en su vista o en el cursor. Cuando utilice la propiedad MaxRecords, deberá esperar mientras el origen de datos remoto construye un cursor para la vista que contiene todas las filas de datos que cumplen las condiciones normales de la cláusula WHERE. Las filas del cursor completo de la vista remota se descargarán de acuerdo con el valor de la propiedad MaxRecords.
Crear un índice en una vista
Puede crear índices locales en una vista, igual que en una tabla, mediante el comando INDEX ON. A diferencia de los índices generados para una tabla, los índices locales que cree en una vista no se almacenarán definitivamente: desaparecerán cuando cierre la vista.
Sugerencia Considere el tamaño del conjunto de resultados de su vista cuando decida si va a crear un índice local en una vista. Indizar un conjunto de resultados grande puede llevar un tiempo considerable y disminuir el rendimiento de la vista.
Para obtener más información acerca de la creación de índices, consulte Trabajar con tablas o INDEX.
Crear relaciones temporales en las vistas
Puede crear relaciones temporales entre índices de vistas o entre índices de vistas e índices de tablas mediante el comando SET RELATION.
Para obtener un mejor rendimiento cuando utilice el comando SET RELATION para relacionar una vista y una tabla, haga que la vista sea el objeto primario y la tabla el objeto secundario en la relación. Hacer que la tabla sea el objeto secundario es más eficaz porque el índice estructural de la tabla se mantiene constantemente, se tiene acceso al mismo de forma más rápida y puede ser usado por el entorno de datos para ordenar los registros. Hay que volver a generar el índice de la vista cada vez que ésta se activa y tarda más tiempo que el índice de la tabla. Un índice de una vista no forma parte de la definición de la vista; por lo tanto, si usa un entorno de datos, la vista no puede ser el objeto secundario porque el índice del objeto secundario tiene que existir como parte de la definición y esto no lo admiten las vistas.
Establecer las propiedades de vistas y conexiones
Cuando cree una vista, ésta heredará los valores de las propiedades, como UpdateType y UseMemoSize, del cursor de entorno o cursor 0 de la sesión actual. Puede cambiar estos valores predeterminados de las propiedades con la función CURSORSETPROP( ), utilizando 0 como número de cursor. Una vez creada la vista y almacenada en una base de datos, puede cambiar las propiedades de la vista mediante la función DBSETPROP( ). Los cambios que realice a las propiedades de una vista en una base de datos se almacenarán definitivamente en la base de datos.
Cuando utilice una vista, el cursor activo de la vista heredará los valores de las propiedades almacenados para la vista en la base de datos. Puede cambiar estas propiedades en el cursor activo mediante la función CURSORSETPROP( ) para el cursor de vista. Los cambios realizados por la función CURSORSETPROP( ) son temporales. El valor temporal para la vista activa desaparece al cerrar la vista, mientras que el valor temporal para el cursor 0 desaparece al cerrar la sesión de Visual FoxPro.
Las conexiones heredan las propiedades de forma similar. Las propiedades predeterminadas para la conexión 0 se heredan al crear y almacenar una conexión con nombre en una base de datos. Puede modificar estos valores predeterminados de las propiedades para la conexión 0 con la función SQLSETPROP( ). Una vez creada la conexión y almacenada en una base de datos, puede modificar las propiedades de la conexión con la función DBSETPROP( ). Cuando utilice una conexión, la conexión activa heredará los valores de las propiedades almacenados en la base de datos. Puede cambiar estas propiedades en la conexión activa con la función SQLSETPROP( ) para el controlador de la conexión.
Tanto las vistas como las conexiones pueden utilizar un origen de datos ODBC con nombre. Si utiliza un origen de datos ODBC en una vista, la conexión heredará las propiedades de la configuración predeterminada de la sesión.
El diagrama siguiente ilustra la herencia de propiedades para las vistas y conexiones. Las líneas grises representan el flujo de herencia de las propiedades y las líneas negras representan los comandos de Visual FoxPro.
Propiedades de vistas y conexiones, y sus herencias
Cambiar tipos de datos predeterminados al descargar vistas remotas
Cuando cree una vista, se establece la propiedad DataType para todos los campos a un valor predeterminado. El valor es la letra del tipo de datos (D, G, I, L, M, P, T, Y) para tipos de datos de longitud fija y la letra seguida por parámetros de precisión y escala entre paréntesis (B(d), C(n), N(n,d)) para tipos de longitud variable. Esta propiedad es de sólo lectura para vistas locales. Para ver una lista de tipos de datos predeterminados, vea Transferir datos de vistas remotas en Implementar una aplicación cliente-servidor.
Puede modificar el valor de la propiedad DataType para el campo de vista remota con la función DBSETPROP( ), como se muestra en esta tabla.
Tipos de datos ODBC para campos remotos | Tipos de datos posibles de un cursor de Visual FoxPro |
---|---|
SQL_CHAR SQL_VARCHAR SQL_LONGVARCHAR |
Character o Memo1 (predeterminado); también General o Picture |
SQL_BINARY SQL_VARBINARY SQL_LONGVARBINARY |
Memo (predeterminado); también Character, General o Picture |
SQL_DECIMAL SQL_NUMERIC |
Numeric o Currency2 (predeterminado); también Character, Integer o Double |
SQL_BIT | Logical (predeterminado); también Character |
SQL_TINYINT SQL_SMALLINT SQL_INTEGER |
Integer (predeterminado); también Character, Numeric, Double o Currency |
SQL_BIGINT | Character (predeterminado); también Integer, Numeric, Double o Currency |
SQL_REAL SQL_FLOAT SQL_DOUBLE |
Double (predeterminado); el número de caracteres decimales es el valor de SET DECIMALS en Visual FoxPro; también Character, Integer, Numeric o Currency |
SQL_DATE | Date (predeterminado); también Character o DateTime |
SQL_TIME | DateTime3 (predeterminado); también Character |
SQL_TIMESTAMP | DateTime4 (predeterminado); también Character o Date |
1. Si el ancho del campo ODBC es menor que el valor de la propiedad de cursor UseMemoSize, se convierte en un campo Character en el cursor de Visual FoxPro; si no, se convierte en un campo Memo.
2. Si el campo de servidor es un tipo de datos monetario, se convierte en un tipo de datos Currency en Visual FoxPro.
3. El valor predeterminado del día es 1/1/1900.
4. Si el valor del campo SQL_TIMESTAMP contiene fracciones de segundo, las fracciones se truncan cuando el valor se convierte en un tipo de datos DateTime de Visual FoxPro.
Usar la propiedad DataType
Puede usar la propiedad DataType para elegir un tipo de datos diferente que el predeterminado. Por ejemplo, es posible que quiera descargar un campo de marca de hora del servidor a Visual FoxPro, pero la asignación del tipo de datos predeterminado a un campo DateTime de Visual FoxPro truncaría todas las fracciones de segundo almacenadas en la marca de hora de servidor. Para conservar las fracciones de segundo, puede usar la propiedad DataType para asignar el campo de marca de hora remoto a un campo de caracteres de Visual FoxPro.
Cerrar las tablas base de una vista
Las tablas base locales abiertas automáticamente cuando usa una vista no se cierran automáticamente cuando cierra una vista; debe cerrarlas explícitamente. Esto es coherente con el comando SELECT - SQL.
Vea también
Abrir múltiples instancias de una vista | Actualizar datos en una vista | Crear consultas | USE | SET RELATION | Actualizar múltiples tablas en una vista | Actualizar datos