Re: [semi OT] mapping vfp variables to sql columns

From: "Hector R(dot) De los Santos (Consultor TI)" <zahory(at)gmail(dot)com>
To: Raúl Andrés Duque Murillo <ra_duque(at)yahoo(dot)com(dot)mx>
Cc: Jaime Casanova <jcasanov(at)systemguards(dot)com(dot)ec>, POSTGRES <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: [semi OT] mapping vfp variables to sql columns
Date: 2009-06-05 12:51:53
Message-ID: 3efb88e60906050551qf75dd33j7a39e71c52ebedf4@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Que tal Jaime, ( Y este si que es un OffTopic)
Segun puedo ver el codigo hay varios "malos habitos" usados, por eso
muchos dicen que VFP es desordenado, pero el desordenado es el
programador, y VFP permite hacerlo.
1) VFP si permite declarar variables de un tipo, eso de declarar una
variable sin un tipo tambien lo hace PHP, que toma su tipo
dependediendo del primer valor almacenado.
Ejemplo:
Local tuVariable as tuTipo
Local lPepito as Integer
Public pPepito as Double

2) (Referente al codigo) - Veo no veo la necesidad de usar
variables(en algunos casos), para lo que estas haciendo es solo INSERT
simple y puedes usar PARAMETRIZACION + TEXT TO (Para armar querys
largos), quedaria algo asi:

TEXT TO sQuery NOSHOW
INSERT INTO tuTabla (campo, campor, campo)
VALUES (?thisform.tutxtx.value,?thisform.tuOtrotxt.value)
ENDTEXT

SQLEXEC(gnConHandle,sQuery)

Creo que se entiende mejor asi ;)

3) Los TXTBOX que son de tipo Numero o Integer debes ponerle 0 en la
propiedad VALUE para ser tratados como tal
4) Los TXTBOX que son de tipo flotante debes ponerle 0.00 en la propiedad VALUE
5) En caso de que tengas error por tipo, puedes hacer un CAST y se lo
puedes hacer al mismo control, eje: ?thisform.textbox.value::VARCHAR
6) Recomendacion: Usar una clase o Funcion para la ejecucion de
consultas asi haces capturas los errores ( ya sea por conexion o
errores
de sintaxis en la consulta.)asi no tienes que repetirlo cada vez que
vayas a enviar algo al motor.

Perdon por el OffTopic.
Suerte

El día 5 de junio de 2009 8:15, Raúl Andrés Duque Murillo
<ra_duque(at)yahoo(dot)com(dot)mx> escribió:
>
>>______________________________
>>De: Jaime Casanova <jcasanov(at)systemguards(dot)com(dot)ec>
>>Para: POSTGRES <pgsql-es-ayuda(at)postgresql(dot)org>
>>Enviado: viernes, 5 de junio, 2009 1:13:22
>>Asunto: [pgsql-es-ayuda] [semi OT] mapping vfp variables to sql columns
>>
>>Hola todos,
>>
>>Otra vez tratando de entender vfp.
>>He aquí que tengo una aplicación (no es mía, por si acaso ;) que hace
>>algo como lo que se muestra en el adjunto.
>>Como verán el código en si es pésimo, no digamos la elección de los
>>nombres de las variables. Pero algo que no ayuda en nada es el hecho
>>se que en vfp no solo no hay necesidad de declarar el tipo de dato de
>>las variables sino que "no es posible hacerlo".
>>
>
> Jaime, no se si no muestras todo el código, pero SI es posible definri el tipo de dato de una variable. Se hace así:
>
> LOCAL
> LOCAL
> LOCAL
> LOCAL
> LOCAL LOCAL llOk AS BOOLEANLOCAL lcXml AS STRINGlcMetodo AS STRINGlnTranInve AS INTEGERlfDiferencia AS DOUBLElfValor AS DoubleloParte AS VARIANTLOCAL loExistLoc AS VARIANTLOCAL ldTransac AS DATE
>
> Atentamente,
>
> RAUL DUQUE
> Bogotá, Colombia
>
>>Sí que fox interpreta los tipo de datos a su antojo de modo que al
>>jeecutar el INSERT postgres me da el siguiente error (fijense que el
>>cero que debia ser interpretado como un entero es interpretado como un
>>loat8:
>>"""
>>2009-06-04 15:28:53 COT ERROR:  column "impreso" is of type boolean
>>but expression is of type double precision at character 466
>>2009-06-04 15:28:53 COT HINT:  You will need to rewrite or cast the expression.
>>2009-06-04 15:28:53 COT STATEMENT:  INSERT INTO FCDOCUME
>>>(tipo,numero,fecha,cliente,zona,vendedor,tip_aplic,num_aplic,fecha_ven,subtotal,total,comentario,codcta,IMPRESO,COM_LIQUID,BLOQUEADO,BLOQUE1,ASENTADO,FINANCIADO,POSTFECHA,IMPUESTO,TURNO)values(E'CC'
>>,'2135'::float8 ,'2009-06-04 00:00:00'::timestamp ,E'0156          '
>>,E'  ' ,E'0003      ' ,E'  ' ,'0'::float8 ,'2009-06-04
>>00:00:00'::timestamp ,'1'::float8 ,'1.12'::float8 ,E'
>>    DAFSD                      ' ,'0'::float8 ,'0'::float8
>>,'0'::float8 ,'0'::float8 ,'0'::float8 ,'0'::float8 ,'0'::float8
>>,'0'::float8 ,'0.12'::float8 ,E'001' )
>>"""
>
> Una solucion simple claro es que al armar la cadena puedo hacer un
> cast para indicar el tipo de dato.
> alguna sugerencia sobre de que otra forma puedo controlar el tipo de
> dato que será enviado a postgres (de ser posible que no implique
> reescribir todo)?
>
> --
> Atentamente,
> Jaime Casanova
> Soporte y capacitación de PostgreSQL
> Asesoría y desarrollo de sistemas
> Guayaquil - Ecuador
> Cel. +59387171157
>
>
>
>      ¡Obtén la mejor experiencia en la web! Descarga gratis el nuevo Internet Explorer 8. http://downloads.yahoo.com/ieak8/?l=mx
> --
> TIP 6: ¿Has buscado en los archivos de nuestra lista de correo?
>               http://archives.postgresql.org/pgsql-es-ayuda
>

--
:: HDS Consultores TI
Servidores | Redes | Programacion | GNU/Linux | PostgreSQL
Santiago, Republica Dominicana.

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Gilberto Castillo Martínez 2009-06-05 13:29:18 Re: Prehistoria de PostgreSql ........
Previous Message Raúl Andrés Duque Murillo 2009-06-05 12:15:17 Re: [semi OT] mapping vfp variables to sql columns