Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Parametros tipo DATE que no funcionan como supondría. (https://www.clubdelphi.com/foros/showthread.php?t=56027)

AzidRain 07-05-2008 03:06:11

Finalmente la solución salió:

Extract requiere que se le pase un valor tipo datetime por lo que es forzoso hacer un cast, al pasarle un parametro tdatetime simplemente no sabe como manejarlo y le es imposible hacer el cast o manejarlo directamente. Curiósamente si utiliza uno el parametro tipo date para otras funciones o bien comparando directamente mediante "<,>, o =". Para usarlo con extract hay que hacer esto:

Código Delphi [-]
ClientDataset2.Close;

 f :=   StringReplace( datetostr(efecha1.Date),'/','.',[rfReplaceAll]);

 SQLDataset1.ParamByName('fecha1').AsString :=  f;

 ClientDataset2.Open;

Y el query queda:
Código SQL [-]
  select * from facturas 
  where  extract(day from cast(:fecha1 as date)) >5

En el caso de Delphi, por claridad convertimos el valor del datepicker a un formato que nos reconozca FB, en este caso la fecha separada con puntos que es como FB reconoce que se trata de una fecha en formato "DD.MM.YYYY", si se la pasamos tal como la tiene el datepicker FB dará por hecho que es una fecha en formato americano tan solo por contener las diagonales.

Posteriormente en el query, hacemos un cast al contenido del parametro, que en este caso es una cadena simple, y lo convertimos en un valor date que extract si se digna en aceptar.

Y así si funciona, aunque implica unas líneas más de código.

Delphius 07-05-2008 04:32:32

AzidRain, me alegro que hayas logrado lo que buscas. Yo habia probado metiendo cast por un lado, sacando por el otro..., pero no se me ocurrió hacer algo así.

Ahora si podrás dormir tranquilo.:D:)

Saludos,


La franja horaria es GMT +2. Ahora son las 01:38:30.

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