Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Problema con consulta (https://www.clubdelphi.com/foros/showthread.php?t=60094)

Nomad 19-09-2008 17:37:24

Problema con consulta
 
Hola estoy realizando la siguiente consulta

Código Delphi [-]
SQL := 'Select Id from Distribution Where (IdGh = :GH) and (SectionLetter = :Sec) and '
      +' (From_Bench = : Desde) AND (To_Bench = :Hacia)';
LocalQuery.SQL.Text := SQL;
LocalQuery.Parameters.ParamByName('GH').Value      := Vivero;;
LocalQuery.Parameters.ParamByName('Sec').Value     := Secc;
LocalQuery.Parameters.ParamByName('Desde').Value   := StrToFloat(From);
LocalQuery.Parameters.ParamByName('Hacia').Value   := StrToFloat(Hacia);
LocalQuery.Active := true;
ExisteDistribucion := LocalQuery.Fields[0].AsString

cuando ejecuto el procedimiento, lleva unos valores que se encuentra en la base datos

Adjunto screenshots:
(el procedimiento cuando es llamado)
http://i401.photobucket.com/albums/p.../variables.gif


(datos en la DB)
http://i401.photobucket.com/albums/p.../basedatos.gif

Sin embargo, aunque los datos de la consulta existen en la Db, no encuentra nada...

Que error estoy cometiendo, llevo como 5 dias, batallando con esto, ya no se que hacer...

Gracias!

coso 19-09-2008 17:47:09

Hola, creo que es por usar .value en vez de los correspondientes .asfloat, .asstring...

Nomad 22-09-2008 17:59:38

Cita:

Empezado por coso (Mensaje 315209)
Hola, creo que es por usar .value en vez de los correspondientes .asfloat, .asstring...

Pero para eso el cast, ademas creo que no admite la propiedad asfloat

coso 22-09-2008 18:00:27

bueno, el .asdouble...lo has probado por eso?

Nomad 22-09-2008 18:15:16

Cita:

Empezado por coso (Mensaje 315533)
bueno, el .asdouble...lo has probado por eso?

No soporta ningun As..... asdouble, asfloat, nada solo Value...

coso 22-09-2008 18:17:40

vale, es adoquery...

coso 22-09-2008 18:22:35

ni idea...si en vez de usar parametros lo colocas directamente en la consulta...¿tampoco te funciona? si es asi, entonces el error tiene que estar en otras lineas.

PD: prueba de poner secc como quotedstr(secc), de la misma manera vivero si es un texto. Los campos de texto tienen que ir con el quotedstr en la consulta. Es probable que usando el variant te interprete, por ejemplo, :GH := vivero como entero, y al compararlo en la consulta, tambien interprete la cadena como entero... lo que yo haria es eso: colocar todo sin usar parametros, usando el quotedstr y el strtofloat segun convenga. saludos.

Delphius 22-09-2008 18:34:35

No estoy totalmente seguro pero tengo entendido que al trabajar con ADO y parámetros hay que establecer el DataType o el tipo de datos:
Código Delphi [-]
TUQuery.Parameters.ParamByName('tu_parametro').Value := ....
TUQuery.Parameters.ParamByName('tu_parametro').DataType := ....

Saludos,

egostar 22-09-2008 18:35:42

Hola.

Yo sugiero que hagas esto:

Código Delphi [-]
LocalQuery.Parameters.ParamByName('Sec').Value := QuotedStr(Secc);

Salud OS

Nomad 22-09-2008 21:59:23

Cita:

Empezado por egostar (Mensaje 315546)
Hola.

Yo sugiero que hagas esto:

Código Delphi [-]LocalQuery.Parameters.ParamByName('Sec').Value := QuotedStr(Secc);


Salud OS

No sirvio... sigue sin retornar nada...

Xcalibur 22-09-2008 22:07:43

¿y si cambias?

"(From_Bench = : Desde)"

por

"(From_Bench = :Desde)"

Nomad 22-09-2008 22:13:54

Cita:

Empezado por Xcalibur (Mensaje 315591)
¿y si cambias?

"(From_Bench = : Desde)"

por

"(From_Bench = :Desde)"

Asi esta, pero la verdad tampoco funciona!

coso 22-09-2008 23:32:23

¿probaste lo de poner todo en una sola linea sin usar argumentos?

Nomad 23-09-2008 02:59:05

Cita:

Empezado por coso (Mensaje 315603)
¿probaste lo de poner todo en una sola linea sin usar argumentos?

No lo he probado, el miercoles lo hago y les aviso!

Softweb 26-09-2008 20:47:55

Deverias tener en cuenta que un valor float tiene decimales y por lo tanto te va a poner como separador de los decimales una coma, ante lo cual te va a cambiar la sentencia.

Saludos


La franja horaria es GMT +2. Ahora son las 16:09:27.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi