Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Mailing lists / lazarus-es / 2010-04

Problema con TSQLQuery

9 messages · 5 people · –

Reply by email Subscribe to this list Your subscription

Read-only archive. Use j and k to move between messages.

Joel Petit

Saludos...

Para comenzar quiero comentarles que uso como motor de base de datos Postgresql.

Les comento que el codigo que ven abajo funciona correctamente. El Problema est� cuando le quito la funcion StrToInt a la variable

grup en la linea 7. Pareciera l�gico que por eso diera error pues en la base de datos el campo grp_codigo (linea 7) es de tipo integer pero

seg�n tengo entendido, el objeto TSQLQuery deberia tomar las variables como parametro en tipo string y el mismo objeto convertirlas

en sus respectivos tipos cuando haga la consulta.

Mi pregunta es la siguiente: si este mismo trozo de codigo sin la funci�n StrToInt en la linea 7 funciona en otros computadores, �porque en mi computador solo funciona con la funci�n StrToInt?

PD. : Este trozo de c�digo pertenece a un proyecto que ya est� terminado, solo se le est�n agregando otras funciones, pero no me parece l�gico cambiar toda

ves que aparesca un objeto TSQLQuery (en todo el proyecto) para que los parametros que se les est�n pasando vayan segun el tipo de campo que est� en la

base de datos.

.

.

.

var
   grup: String;
begin
    grup:=frmmd.grupo;
    qobjetos.Close;
    qobjetos.Params.ParamByName('accsis_objeto').Value:=objeto;
    qobjetos.Params.ParamByName('grp_codigo').Value:=StrToInt(grup);
    qobjetos.Open;
    if not qobjetos.IsEmpty then
    begin
         permiso:=False;
    end
       else
    begin
        permiso:=True;
    end;
end;

_________________________________________________________________ News, entertainment and everything you care it now! http://www.live.com/getstarted.aspx
------------ pr�xima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus.freepascal.org/pipermail/lazarus-es/attachments/20100405/dc52c9b1/attachment.html>

Reply by email

José Mejuto
to Joel Petit

Hello Joel,

Monday, April 5, 2010, 4:36:36 PM, you wrote:

JP> Mi pregunta es la siguiente: si este mismo trozo de codigo JP> sin la funci�n StrToInt en la linea 7 funciona en otros JP> computadores, �porque en mi computador solo funciona con la JP> funci�n StrToInt?

Probablemente la versi�n de fpc es distinta, y los "variants" son una caja de Pandora, que cuando la abres (las usas) los problemas se vuelven interminables.

JP> qobjetos.Params.ParamByName('grp_codigo').Value:=StrToInt(grup);

Un ejemplo del problema de los variants, que deber�a pasar si no usamos el StrToInt en el caso de que "grup" sea '0' ? Que deber�a asignarle el integer cero no ? Y si grup es '$00' damos error ? o suponemos que es un valor hexadecimal ? y si grup es '' damos error, asignamos cero o NULL ?

Best regards, Jos�

Reply by email

Joel Petit
to José Mejuto

Bueno, ante todo muchas gracias por la ayuda.

En relaci�n a la version del fpc, le comento que es la misma en los distintos computadores en los que he corrido este trozo de c�digo.

Ahora, en lo que respecta a los "variants" ahi si no tengo nada que decir pues no tengo conocimiento al respecto, pero le agradeceria

si me explica mas al respecto, tal ves halle la soluci�n para no modificar todo el proyecto. Gracias.

Show quoted text 35 lines
Date: Mon, 5 Apr 2010 18:01:19 +0200 From: joshyfun en gmail.com To: lazarus-es en lists.lazarus.freepascal.org Subject: Re: [Lazarus-es] Problema con TSQLQuery Hello Joel, Monday, April 5, 2010, 4:36:36 PM, you wrote: JP> Mi pregunta es la siguiente: si este mismo trozo de codigo JP> sin la funci�n StrToInt en la linea 7 funciona en otros JP> computadores, �porque en mi computador solo funciona con la JP> funci�n StrToInt? Probablemente la versi�n de fpc es distinta, y los "variants" son una caja de Pandora, que cuando la abres (las usas) los problemas se vuelven interminables. JP> qobjetos.Params.ParamByName('grp_codigo').Value:=StrToInt(grup); Un ejemplo del problema de los variants, que deber�a pasar si no usamos el StrToInt en el caso de que "grup" sea '0' ? Que deber�a asignarle el integer cero no ? Y si grup es '$00' damos error ? o suponemos que es un valor hexadecimal ? y si grup es '' damos error, asignamos cero o NULL ? -- Best regards, Jos� _______________________________________________ Lazarus-es mailing list Lazarus-es en lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es

_________________________________________________________________ Discover the new Windows Vista
http://search.msn.com/results.aspx?q=windows+vista&mkt=en-US&form=QBRE ------------ pr�xima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus.freepascal.org/pipermail/lazarus-es/attachments/20100405/126bfbcc/attachment.html>

Reply by email

Maxi
to Joel Petit

2010/4/5 Joel Petit <joelptit en hotmail.com>:

Show quoted text 53 lines
Bueno, ante todo muchas gracias por la ayuda. En relaci�n a la version del fpc, le comento que es la misma en los distintos�computadores en los que he corrido este trozo de c�digo. Ahora, en lo que respecta a los "variants" ahi si no tengo nada que decir pues no tengo conocimiento al respecto, pero le agradeceria si me explica mas al�respecto, tal ves�halle la soluci�n para no modificar todo el proyecto. Gracias. > Date: Mon, 5 Apr 2010 18:01:19 +0200 > From: joshyfun en gmail.com > To: lazarus-es en lists.lazarus.freepascal.org > Subject: Re: [Lazarus-es] Problema con TSQLQuery > > Hello Joel, > > Monday, April 5, 2010, 4:36:36 PM, you wrote: > > JP> Mi pregunta es la siguiente: si este mismo trozo de codigo > JP> sin la funci�n StrToInt en la linea 7 funciona en otros > JP> computadores, �porque en mi computador solo funciona con la > JP> funci�n StrToInt? > > Probablemente la versi�n de fpc es distinta, y los "variants" son una > caja de Pandora, que cuando la abres (las usas) los problemas se > vuelven interminables. > > JP> qobjetos.Params.ParamByName('grp_codigo').Value:=StrToInt(grup); > > Un ejemplo del problema de los variants, que deber�a pasar si no > usamos el StrToInt en el caso de que "grup" sea '0' ? Que deber�a > asignarle el integer cero no ? Y si grup es '$00' damos error ? o > suponemos que es un valor hexadecimal ? y si grup es '' damos error, > asignamos cero o NULL ? > > -- > Best regards, > Jos� > > > _______________________________________________ > Lazarus-es mailing list > Lazarus-es en lists.lazarus.freepascal.org > http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es ________________________________ Discover the new Windows Vista Learn more! _______________________________________________ Lazarus-es mailing list Lazarus-es en lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es

porque no haces el forzado de lazarus?

qobjetos.Params.ParamByName('grp_codigo').asString:=grup;
el value con strings puede fallar por los valores como te comentaron antes
Maximiliano Duarte Linux User #495070 Ubuntu User #28504 Tolerancia significa disculpar los defectos de los dem�s; tacto, no reparar en ellos.

Reply by email

Ismael L. Donis García
to Joel Petit: Saludos... Para comenzar quiero comentarles que uso como motor de base de datos…

No has probado con:

qobjetos.Params.ParamByName('grp_codigo').AsInteger:=grup;

Saludos
=========
|| ISMAEL ||
=========

Earlier message 53 lines
----- Original Message ----- From: Joel Petit To: lazarus-es en lists.lazarus.freepascal.org Sent: Monday, April 05, 2010 9:36 AM Subject: [Lazarus-es] Problema con TSQLQuery Saludos... Para comenzar quiero comentarles que uso como motor de base de datos Postgresql. Les comento que el codigo que ven abajo funciona correctamente. El Problema est� cuando le quito la funcion StrToInt a la variable grup en la linea 7. Pareciera l�gico que por eso diera error pues en la base de datos el campo grp_codigo (linea 7) es de tipo integer pero seg�n tengo entendido, el objeto TSQLQuery deberia tomar las variables como parametro en tipo string y el mismo objeto convertirlas en sus respectivos tipos cuando haga la consulta. Mi pregunta es la siguiente: si este mismo trozo de codigo sin la funci�n StrToInt en la linea 7 funciona en otros computadores, �porque en mi computador solo funciona con la funci�n StrToInt? PD. : Este trozo de c�digo pertenece a un proyecto que ya est� terminado, solo se le est�n agregando otras funciones, pero no me parece l�gico cambiar toda ves que aparesca un objeto TSQLQuery (en todo el proyecto) para que los parametros que se les est�n pasando vayan segun el tipo de campo que est� en la base de datos. . . . 1.. var 2.. grup: String; 3.. begin 4.. grup:=frmmd.grupo; 5.. qobjetos.Close; 6.. qobjetos.Params.ParamByName('accsis_objeto').Value:=objeto; 7.. qobjetos.Params.ParamByName('grp_codigo').Value:=StrToInt(grup); 8.. qobjetos.Open; 9.. if not qobjetos.IsEmpty then 10.. begin 11.. permiso:=False; 12.. end 13.. else 14.. begin 15.. permiso:=True; 16.. end; 17.. end; ------------------------------------------------------------------------------ Get news, entertainment and everything you care it out! ------------------------------------------------------------------------------

Reply by email

Ismael L. Donis García
to Joel Petit: Bueno, ante todo muchas gracias por la ayuda. En relaci�n a la version del fpc, le…

Para mi entender (no se nada de nada de Lazarus y menos delphi) que deber�as asignar el tipo espec�fico.

en ves de .Value

poner el tipo seg�n sea el caso:

qobjetos.Params.ParamByName(nombre_del_campo').AsDate .AsInteger
.AsCurrency
.AsSmallInt
.AsString

Saludos
=========
|| ISMAEL ||
=========

Earlier message 57 lines
----- Original Message ----- From: Joel Petit To: lazarus-es en lists.lazarus.freepascal.org Sent: Monday, April 05, 2010 11:17 AM Subject: Re: [Lazarus-es] Problema con TSQLQuery Bueno, ante todo muchas gracias por la ayuda. En relaci�n a la version del fpc, le comento que es la misma en los distintos computadores en los que he corrido este trozo de c�digo. Ahora, en lo que respecta a los "variants" ahi si no tengo nada que decir pues no tengo conocimiento al respecto, pero le agradeceria si me explica mas al respecto, tal ves halle la soluci�n para no modificar todo el proyecto. Gracias. > Date: Mon, 5 Apr 2010 18:01:19 +0200 > From: joshyfun en gmail.com > To: lazarus-es en lists.lazarus.freepascal.org > Subject: Re: [Lazarus-es] Problema con TSQLQuery > > Hello Joel, > > Monday, April 5, 2010, 4:36:36 PM, you wrote: > > JP> Mi pregunta es la siguiente: si este mismo trozo de codigo > JP> sin la funci�n StrToInt en la linea 7 funciona en otros > JP> computadores, �porque en mi computador solo funciona con la > JP> funci�n StrToInt? > > Probablemente la versi�n de fpc es distinta, y los "variants" son una > caja de Pandora, que cuando la abres (las usas) los problemas se > vuelven interminables. > > JP> qobjetos.Params.ParamByName('grp_codigo').Value:=StrToInt(grup); > > Un ejemplo del problema de los variants, que deber�a pasar si no > usamos el StrToInt en el caso de que "grup" sea '0' ? Que deber�a > asignarle el integer cero no ? Y si grup es '$00' damos error ? o > suponemos que es un valor hexadecimal ? y si grup es '' damos error, > asignamos cero o NULL ? > > -- > Best regards, > Jos� > > > _______________________________________________ > Lazarus-es mailing list > Lazarus-es en lists.lazarus.freepascal.org > http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es ------------------------------------------------------------------------------ Discover the new Windows Vista Learn more! ------------------------------------------------------------------------------

Reply by email

josé Antonio Cuello Principal
to Joel Petit: Saludos... Para comenzar quiero comentarles que uso como motor de base de datos…

El lun, 05-04-2010 a las 10:36 -0400, Joel Petit escribi�:

Mi pregunta es la siguiente: si este mismo trozo de codigo sin la funci�n StrToInt en la linea 7 funciona en otros computadores, �porque en mi computador solo funciona con la funci�n StrToInt?

Aunque en s�lo en una ocasi�n me suedi� que el mismo programa en un equipo funcionaba bien y en otro no hac�a bien una condicional si no pasaba el string a may�sculas (nunca logr� encontrar por qu� suced�a), al igual que el resto de mensajes me inclino a pensar que es por el uso de los variants. As� que el problema deber�a desaparecer usando el tipo en el parambyname.

Show quoted text 8 lines
1. if not qobjetos.IsEmpty then 2. begin 3. permiso:=False; 4. end 5. else 6. begin 7. permiso:=True; 8. end;
PD.: Estas l�neas las podr�as poner en una s�la. Un saludo.
  permiso := qobjetos.IsEmpty;

________________________________________________________________________

ARTEX TRADING S.A.
JOS� ANTONIO CUELLO PRINCIPAL

------------ pr�xima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus.freepascal.org/pipermail/lazarus-es/attachments/20100406/c46d45cb/attachment.html>

Reply by email

Joel Petit

Gracias a todos por sus sugerencias. Todas son v�lidas. La cuesti�n est� en que no quiero modificar todo el c�digo del proyecto. No lo quiero hacer porque en algunos computadores el sistema funciona bien. A demas no ser�a l�gico modificar cada vez que cambie el sistema a otro computador.

Gracias Totales...

_________________________________________________________________ Discover the new Windows Vista
http://search.msn.com/results.aspx?q=windows+vista&mkt=en-US&form=QBRE ------------ pr�xima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus.freepascal.org/pipermail/lazarus-es/attachments/20100406/d8cafe41/attachment.html>

Reply by email

Maxi
to Joel Petit

2010/4/6 Joel Petit <joelptit en hotmail.com>:

Show quoted text 16 lines
Gracias a todos por sus sugerencias. Todas son v�lidas. La cuesti�n est� en que no quiero modificar todo el c�digo del proyecto. No lo quiero hacer porque en algunos computadores el sistema funciona bien. A demas no ser�a l�gico modificar cada vez que cambie el sistema a otro computador. Gracias Totales... ________________________________ Discover the new Windows Vista Learn more! _______________________________________________ Lazarus-es mailing list Lazarus-es en lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es

con mas razon, hace una busqueda de los documentos con ese campo y cambialos para que no te de dolores de cabeza dentro de un tiempo cuando no recuerdes que era eso lo que fallaba.
Ademas usar .value si no vas a cambiar el tipo de dato en la BD es preferible saber de antemano que tipo de dato vas a ingresar y no dejar que el compilador adivine que dato queres meter. en una expresion que te devuelve un decimal y el campo es entero puede fallarte o dar una excepcion pero si pones .asInteger := 0.45 el compilador te avisa que no va a poder. Me explico?

Maximiliano Duarte Linux User #495070 Ubuntu User #28504 Tolerancia significa disculpar los defectos de los dem�s; tacto, no reparar en ellos.

Reply by email