Este artículo comenta sobre algunas Novedades de VFP 9.0 relativa al tema Tratamiento de datos.
Veremos los tres nuevos tipos de datos, así como el nuevo tipo de índice.
Además, se mencionan algunas mejoras en SQL, CursorAdapter y XML que potencian aun más el motor de datos.
Sobre este tema tan importante para nuestro trabajo hay escritos y ejemplos aportados por otros compañeros, algunos de los enlaces a estos trabajos se enumeran al final.
VFP9 - Mejoras relativas a tratamiento de DatosPor Amby
Visual FoxPro es un lenguaje centrado en datos. Nos detendremos a ver algunas de las novedades que aporta la versión 9.0 sobre este tema. Nuevos tipos de datos: VarChar, Varbinary y Blob En la versión 9.0 hay tres nuevos tipos de datos y un nuevo tipo de índice. Los 3 tipos de datos facilitan el trabajo con otros motores de bases de datos que ya los manejan. El nuevo tipo de índice Binary mejora la optimización Rushmore para condiciones que son de tipo lógico. Veamos algunos detalles. Varchar - VSe incluye por compatibilidad con SQL Server donde ya existe. - Es un dato de caracteres; pero en el que no hay los espacios en blanco sobrantes.
- Se puede emplear en tablas nativas; pero no tiene compatibilidad hacia atrás.
- Como los campos de tipo carácter se pueden emplear en índices, su límite es 254 caracteres y acepta valores nulos.
- La combinación de campos de caracteres y varchar devuelve varchar.
- Se pueden ver ejemplos en: http://www.panoramabox.com/GoPub.aspx?IdObj=2753
Varbinary - Q Este sí es un nuevo tipo de datos que contiene valores binarios. - Se incluye por compatibilidad; pero se puede utilizar para valores binarios tipo timestamps o GUIDs en tablas nativas VFP.
- Como VarChar, su longitud no coincide con la del campo.
- El valor se guarda como 0h y luego una serie de valores hexadecimales, no se guarda entre comillas.
- Se puede emplear en índices, acepta valores nulos y su long máxima es 254 caracteres.
- La combinación C + Q = C; pero Q + C = Q, depende del primero en la expresión
- Las comparaciones entre Q y C ó V dependen del orden de los valores
- Tanto CursorAdapter como XMLAdapter han incluido propiedades nuevas para soportar los nuevos tipos de datos.
- Se pueden ver ejemplos en: http://www.panoramabox.com/GoPub.aspx?IdObj=2754
Blob - WSe incluye por compatibilidad; pero puede tener muchos usos para tablas nativas. - Como los campos Memo, no se puede emplear en índices, acepta valores Null y su long máxima es 2GB.
- Para ver su contenido MODIFY MEMO, se muestra el dato binario, de sólo lectura.
- Para actualizarlo - Replace campoBlob with filetostr(archivo.gif)
- Para mostrarlo - controlimagen.PictureVal = tabla.campoBlob
- Se puede ver un ejemplo y más detalles sobre este nuevo tipo de dato en el artículo enviado por Luis María Guayán en: http://www.panoramabox.com/GoPub.aspx?IdObj=2470
Indice Binary- Válido sobre DELETED() y cualquier otra expresión lógica que contiene sólo dos valores posibles .T. ó .F.
- Es mucho más corto y rápido cuando se utiliza, por ejemplo, en índices basados en registros eliminados.
- Es válido para tablas libres y tablas de DBC
- Es Rushmore optimizable; pero tiene restricciones:
- No se puede hacer SEEK() ni establecer un SET ORDER por el, ni en las cláusulas FOR.
- Tampoco puede cambiar el orden (Ascending, Descending)
- Las expresiones lógicas nunca deben evaluar valores nulos.
Mejoras XML XML (eXtensible Markup Language) se va convirtiendo en un estándar para la transmisión de datos y es soportado por la mayoría de aplicaciones MS. VFP incluyó en la versión 7.0 las funciones XMLTOCURSOR(), XMLUPDATEGRAM() y CURSORTOXML() que posibilitaron el trabajo y conversión de XML en cursores VFP. La versión 8.0 incluyó XMLAdapter, XMLTable y XMLField que completaban la funcionalidad y eliminaban muchas de las limitaciones de las funciones anteriores. Pero aun quedaron limitaciones en cuanto a poder descifrar esquemas XML y la creación de XML anidados o jerárquicos. Las mejoras aportadas al tratamiento de XML desde VFP se centran en XML anidados, mejor soporte XPath y a partir de esta versión 9.0 las aplicaciones son capaces de producir y consumir un mayor rango de documentos XML. Para ello se incluyen nuevos parámetros y propiedades, por ejemplo: Nueva propiedad RespectNesting en el XMLAdapter controla el comportamiento de anidamiento de las tablas que se se agregan al esquema y como se genera el XML, para ello las tablas han de estar previamente relacionadas. La propiedad ha de ser establecida a .T. antes de llamar a ToXML. La nueva clase XMLTable también ha sido mejorada en este sentido. Mejoras SQL El sublenguaje SQL en VFP permite manipular los datos sin preocuparnos de punteros de registro ni áreas de trabajo. Muchos de los cambios relativos a SQL en VFP 9.0 aumentan la compatibilidad con el estándar SQL-92. Proporcionan más herramientas para la manipulación de datos. Hasta VFP 8.0 las subconsultas se podían utilizar sólo en la cláusula Where del comando SQL. En la versión 9.0 se eliminaron un grupo de restricciones de las versiones anteriores, tales como: - total de UNIONs era 9 ahora sin límites,
- cantidad de tablas y alias referenciados era 30 ahora sin límite y
- subconsultas anidadas de 1 a sin límites.
Además se permiten, por primera vez, subconsultas en la cláusula FROM, en la lista de campos y en la cláusula SET de un comando Update SQL. El hecho de que podamos extraer datos de una única consulta en lugar de dos o más consultas como necesitábamos antes de VFP 9.0 no solo agiliza el código sino que facilita la definición de vistas para esos casos. Esta versión trae mejoras de optimización aplicadas a la cláusula LIKE con %. Y hablando de optimización, la función SYS(3054), que se introdujo en VFP 5.0, brinda información sobre cómo FoxPro optimiza una consulta. Ahora la función SYS(3092) viene en su ayuda ya que posibilita que la salida se produzca a un archivo log, Sys(3054) envía la salida solo a la ventana activa o una variable. Otro aspecto novedoso es que una consulta puede utilizar la información disponible en el buffer en lugar de en el disco. Para ello basta con agregar la nueva cláusula WITH BUFFERING = .T. en el comando SELECT. Se puede controlar globalmente a través del nuevo comando SET SQLBUFFERING. Mejoras en CursorAdapter La clase CursorAdapter fue incluida en VFP 8.0 con el objetivo de ser un adaptador de diferentes formatos y orígenes de datos a cursores nativos de VFP. La nueva versión aporta mejoras y complementa el funcionamiento anterior, al incluir un grupo de propiedades y métodos nuevos. El límite de tamaño de una propiedad cambió de 255 a 8.191 caracteres. De esta forma se eliminan los obstáculos con la cadena CursorSchema generada por el generador de CA, ya no aparecerán mensajes de error por hacer la cadena muy larga y las propiedades se pueden establecer en el generador sin tener que escribirlas en el INIT. Transacciones A partir de VFP 9.0 se admiten transacciones sobre tablas libres y cursores creados con Create Cursor, para esto se han creado dos nuevas funciones MAKETRANSACTABLE() e ISTRANSACTABLE() . Una vez que se indica, la transacción emplea los mismos comandos y el mismo comportamiento de antes. Sólo es posible si está activado el buffering por filas. Siempre retorna .T. para tablas contenidas en DBC. Son soportadas por OLE DB. Soporte de nombres largos para tipos de datos Con el objetivo de que VFP sea cada vez más consistente con los otros lenguajes VFP 9.0 introdujo soporte para nombres largos de tipo de datos. Los comandos que lo admiten son: Alter Table, Create Cursor, Create Table, Create from, y la función Cast(), la propiedad CursorSchema de CursorAdapter y la propiedad Datatype de los campos XML. Hay un extra para C,N, I, que admiten además Char, Num e Int. Si el nombre largo no es correcto, emplea la primera letra y si no existe ningún tipo entonces da error. Por ejemplo si se indica que el tipo es Money crea tipo Memo, porque Money no existe y toma la letra M. ConclusionesVisual FoxPro 9.0 incluye tres nuevos tipos de datos, un nuevo tipo de índice, Soporte de nombres largos para tipos de datos, mejoras en SQL, CursorAdapter y XML para lograr más compatibilidad, más flexibilidad, menos restricciones y límites, lo que potencia aun más el motor de datos. Esta herramienta centrada en datos, incorpora con cada nueva versión funcionalidades para el tratamiento de datos, según requerimientos de las tecnologías afines. Otros enlaces recomendados What's New with Data in Visual FoxPro 9? Por David T. Anderson http://www.code-magazine.com/focus/Article.aspx?quickid=0404022 Solucionar el problema del relleno de VarChar Por Mike Lewis http://www.portalfox.com/article.php?sid=1451 Accediendo a datos de VFP 9.0 desde la Web con el Proveedor OLE DB de VFP 9.0 Por Luis María Guayán http://www.portalfox.com/article.php?sid=1591 Do More With Visual FoxPro 9's SQL Commands Por Tamar E. Granor http://foxproadvisor.com/doc/14335 Exchange Data Between Applications with Visual FoxPro 9 Por Christof Wollenhaupt http://foxproadvisor.com/doc/14609 Here a Subquery, There a Subquery Por Tamar E. Granor http://foxproadvisor.com/doc/14136 The Ultimate Power & Speed of VFP Por Val Matison http://advisor.com/Articles.nsf/aid/MATIV02 New in VFP 9 Por Tamar E. Granor http://foxproadvisor.com/doc/14391 Walking on Cloud 9.0 of Visual FoxPro Por FoxTeam http://www.code-magazine.com/focus/Article.aspx?quickid=0404012 Saludos,
Ana María Bisbé York www.amby.net
|