PDA

Ver la Versión Completa : Problema con consulta


Nomad
19-09-2008, 17:37:24
Hola estoy realizando la siguiente consulta


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/pp98/lfelipecr/variables.gif


(datos en la DB)
http://i401.photobucket.com/albums/pp98/lfelipecr/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
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
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:

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:


LocalQuery.Parameters.ParamByName('Sec').Value := QuotedStr(Secc);


Salud OS

Nomad
22-09-2008, 21:59:23
Hola.

Yo sugiero que hagas esto:

Código Delphi [-] (http://www.clubdelphi.com/foros/#)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
¿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
¿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