Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Problema consulta con fechas ... (https://www.clubdelphi.com/foros/showthread.php?t=28694)

serhasae 29-12-2005 12:51:44

Problema consulta con fechas ...
 
Estoy utilizando bases de datos paradox y al intentar hacer una consulta no se porque se me ralla.
Declaro f1 que es un string que almacena una fecha en este caso
'31/12/2005'. Compruebo que lo almacena bien este valor y esto esta en un bucle pero los valores de numeroficha, van corriendo correctamente.

y ahi va mi consulta

dm.qhorario.active:=False;

dm.qhorario.sql.add('Select * from horario');
dm.qhorario.sql.add('where nficha='+dm.tfichanficha.asstring);
dm.qhorario.sql.add('and f_ini_horario<=:e');


dm.qhorario.parambyname('e').asdate:=strtodate(f1);


Cambio f1 por 31/12/2005 y si me toma los registros del mes de diciembre, sino los salta, tengo uno que pone 29/12/2005 y me lo salta. He comprobado que el error es que no lo convierte bien f1 a date. ¿ la consulta deberia haberla echo de otra manera?. F_ini_horario es de tipo date. F1 es de tipo string. Saludos y gracias por ayudarme.

Lepe 29-12-2005 13:05:27

Cita:

Empezado por serhasae
He comprobado que el error es que no lo convierte bien f1 a date. ¿ la consulta deberia haberla echo de otra manera?. F_ini_horario es de tipo date. F1 es de tipo string. Saludos y gracias por ayudarme.

¿En qué te basas para afirmar eso? ¿Con qué fechas has probado?

¿no puedes usar un TdateTimePicker para pasar la fecha directamente de un calendario?

saludos

delphi.com.ar 29-12-2005 13:06:38

Cita:

Empezado por serhasae
Declaro f1 que es un string que almacena una fecha en este caso '31/12/2005'.

Para mi esto es un error mas que común.... ¿Porque declarar un String para guardar una fecha teniendo un tipo de dato específico?


Cita:

Empezado por serhasae
Código Delphi [-]
dm.qhorario.sql.add('where nficha='+dm.tfichanficha.asstring);
dm.qhorario.sql.add('and f_ini_horario<=:e');
 
 
dm.qhorario.parambyname('e').asdate:=strtodate(f1);

¿Porqué no pasas los dos valores (nficha y f_ini_horario) como parámetros?
¿Que pasa si ejecutas una consulta similar desde la consola de la base de datos?

Saludos!

serhasae 29-12-2005 15:02:05

Era por ahorrarme la variable delphi, es que son fechas y como las manipulo cogo por ejemplo solo los dias o los meses, me es mas facil utilizarlos como caracteres que utilizando funciones para decodificar la fecha. Gracias ya lo arregle, asignandolo a una variable. Gracias y Saludos.

delphi.com.ar 29-12-2005 15:12:58

Cita:

Empezado por serhasae
...como las manipulo cogo por ejemplo solo los dias o los meses, me es mas facil utilizarlos como caracteres que utilizando funciones para decodificar la fecha.

Pues yo te diría todo lo contrario, si conoces las funciones adecuadas es mucho mas sencillo trabajar con fechas cuando son del tipo correcto. Ademas es mucho menos costoso para el procesador y la memoria!
Insisto que es un mal hábito muy común, heredado de conceptos viejos de programación.

Saludos!

Fernando 24-01-2006 07:13:10

dm.qhorario.parambyname('e').VALUE:= f1;

Salu2.


La franja horaria es GMT +2. Ahora son las 14:08:05.

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