Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   MySQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=21)
-   -   TADOQuery no devuelve Valores con la proopiedad SQL (https://www.clubdelphi.com/foros/showthread.php?t=86264)

frandigo77 09-07-2014 10:06:47

TADOQuery no devuelve Valores con la proopiedad SQL
 
Hola q tal... soy Fran y aun que llevo dado de alta una temporada no he visto la necesidad del foro hasta ahora. Bueno comentar que estoy desarrollando una aplicacion con Delphi XE5 y MySQL y tengo problemas para traer registros a un TClientDataSet con un TADOQuery. La SQL de la propiedad SQL del TADOQuery es la siguiente:

Código SQL [-]

select U.Id, U.Login, U.Pwd, U.FecAlta, U.IdESPersonal, E.NumExp, P.Nombre, P.Apellidos
from periferiadb.usuarios U left outer join periferiadb.entradassalidaspersonal E
on U.IdESPersonal = E.Id left outer join periferiadb.personal P on E.IdPersonal = P.Id
where U.Id = @userId and (E.FecBaja is null or E.FecBaja > NOW())

En la propiedad parameters esta declarado el parametro userId del tipo entero:

La consulta devuelve una fila en MySQL WorkBench pero no obtengo ningun valor en el cliente, sin embargo si ejecuta la consulta
cuando desde el cliente le asigno la SQL via la propiedad Commandtext me devuelve la fila requerida. Alguien sabría explicarmelo o es problema del compoenente y MySQL.... gracias de antemano y espero poder ayudar en alguna consulta.

Neftali [Germán.Estévez] 09-07-2014 12:28:20

¿Utilizas un Open o un ExecSQL?
Debería ser el primero.

Casimiro Notevi 09-07-2014 12:36:01

Cita:

Empezado por frandigo77 (Mensaje 478842)
Hola

Bienvenido a clubdelphi, ¿ya leiste nuestra guía de estilo?, gracias por tu colaboración :)

Y recuerda poner los tags al código fuente, ejemplo:



Gracias :)

orodriguezca 09-07-2014 15:14:50

En la propieda SQL del TADOQuery (y en general de cualquier query en Delphi) los parámetros de la consulta deben ser antecedidos por un sigo de dos punto ( : ); en consecuencia tu sentencia SQL quedaría asi:

Código SQL [-]
select U.Id, U.Login, U.Pwd, U.FecAlta, U.IdESPersonal, E.NumExp, P.Nombre, P.Apellidos
from periferiadb.usuarios U left outer join periferiadb.entradassalidaspersonal E
on U.IdESPersonal = E.Id left outer join periferiadb.personal P on E.IdPersonal = P.Id
where U.Id = :userId and (E.FecBaja is null or E.FecBaja > NOW())

Notese que cambié @userID por :userID.

Espero te sirva.

frandigo77 09-07-2014 16:17:43

OK, ya probe con : en vez de @ y funciona, gracias por la solución.

Salud.


La franja horaria es GMT +2. Ahora son las 15:30:23.

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