19 de junio de 2016

Tipo de dato VarBinary en VFP9

La última versión de Visual FoxPro (VFP9) incluye tres tipos de datos nuevos: VarBinary, VarChar y Blob. Este artículo comenta alguna de las peculiaridades del tipo de dato VarBinary.

*---------------------------------------------------------
* Método:
*  DATOVARBINARY.PRG
* Programador:
*  Ana María Bisbé York
* Fecha de Terminación:
*  07/02/05 10:39:59 AM
* Comentarios:
*       Este ejemplo fue mostrado en el IV Encuentro de Desarrolladores realizado por
*   Danysoft Internacional www.danysoft.com en Febrero 2005 en Microsoft Ibérica.
*  en la sesión Novedades de Visual FoxPro 9.0
*
*  En VFP 9.0 uno de los nuevos tipos de datos es VARBINARY, que contiene valores binarios
*   Se incluye por compatibilidad; pero se puede utilizar para valores binarios en tablas nativas VFP.
*   Su longitud no coincide con la del campo, sino con la del dato que es almacenado.
*  El valor se guarda como 0h y luego una serie de valores hexadecimales, no se guarda entre comillas
*  Se puede emplear en índices, acepta NULL y su longitud máxima es 254 caracteres.
*  Solo admite MACHINE como secuencia Collate para índices sobre campos Varbinary.
*  No se puede emplear en SQL LIKE, LIKE(), LIKE(), BINTOC(), CTOBIN().
*  Se puede buscar SEEK() por la representación binaria o de caracteres del dato.
*  TYPE() y VARTYPE() devuelven "Q" 
*  La combinación C + Q = C; pero Q + C = Q, depende del primero en la expresión 
*  Las comparaciones entre Q y C ó V depende del orden de los valores
*  Para los cuadros de textos se cumple Format = F, además Format = H para evitar que
*               se introduzcan datos no binarios. 
*
*  El siguiente código tiene como objetivo mostrar algunos aspectos relacionados:
*
*   Este código crea un cursor con un único campo VarBinary al que llamamos qCampo
*   Llenamos el campo con 0h466F78 que es el dato correspondiente a Fox 
*   Muestra el valor que devuelven las funciones VARTYPE() y LEN()
*   Muestra el resultado de realizar combinaciones con campos de caracteres
*   Muestra el resultado de comparaciones.
*---------------------------------------------------------
CLEAR
CREATE CURSOR curVarBinary (qCampo Q(20))
INSERT INTO curVarBinary VALUES (0h466F78) && Se corresponde con la cadena Fox
BROWSE
? 'Vartype devuelve ' + VARTYPE(qCampo)    && Muestra Vartype devuelve Q
? 'Len devuelve '+ STR(LEN(qCampo))        && Muestra Len devuelve 3
? 'qCampo devuelve ' + qCampo              && Muestra qCampo devuelve Fox

* Combinación C + Q = C
? ''
? 'Combinación C + Q = C'
? 'Me gusta mucho programar en ' + qCampo  && Muestra Me gusta programar en Fox

* Combinación Q + C = Q
? ''
? 'Combinación Q + C = Q'
? qCampo + '.NET dos herramientas para desarrollar aplicaciones'
* Devuelve 0h466F782E4E455420646F732068657272616D69656E7461732070617261206465736172726F6C6C61722061706C69636163696F6E6573

* Para convertir un tipo de dato en otro, a pesar de que no hay una función nativa,
* se realiza de la siguiente forma: concatenando con una cadena de caracteres vacía
? ''
? 'Convierto cadena hexadecimal en caracteres'
? ''+ 0h466F78      && Muestra Fox

* Comparaciones
? ''
? 'Comparo: qCampo = "Fox"'
? qCampo = 'Fox'    && Muestra .T.

? ''
? 'Comparo: qCampo = "Fox "'
? qCampo = 'Fox '   && Muestra .F.

Saludos,

Ana María Bisbé York

No hay comentarios. :

Publicar un comentario