Foros Club Delphi

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

Kenobi 20-04-2009 03:52:52

Problema con fechas Tdate
 
Tenngo un aplicacion en la cual utilizo sql para consultar rangos de pedidos entre fechas, ahora bien para esto generalmente uso tmsdatePicker el cual me devuelve la fecha seleccionada en su propiedad date...

Bien aparte de eso dentro de la misma aplicacion manejo un array de Tdate llamado arregloDias en el cual dada una fecha cualquiera guardo las fechas de toda la semana cosa de poder manejar esos valores facilmente,

tengo un procedimiento que llama a una consulta con paramentros (los cuales paso como parametros) ...algo asi

Código Delphi [-]
procedure consultar(Inicio,Fin:Tdate);
Begin
    Consulta.Close;
    consulta.Params.ParamValues['ValDesde']:=Desde;
    consulta.Params.ParamValues['ValHasta']:=Hasta;
    consulta.Open;
End;

ahora bien todo funciona cuando paso los valores de los paramentros desde un timepicker no asi cuando los paso como los elementos del arreglo ejemplo

Código Delphi [-]
//llamada a procedimiento 
Consultar_SolicitudAreas(DatePicker1.Date,DatePicker2.Date);

no funciona si lo llamo asi ....

Código Delphi [-]
Consulta(ArregloDias[1],ArregloDias[7]);

algo curioso solo funciona si en la declaracion del procedure los paramentros son del tipo variant , asi mismo en la declaracion del arrayDias

Código Delphi [-]
procedure consultar(Inicio,Fin:Variant);
ArrayDias =Array[1..7] of Variant;

la verdad asi ya funciona pero no me convence porque no se bien que es lo que pasa ....

me gustaria que alguien me lo aclare antes de continuar arrastrando un error que despues me cueste caro ...

Gracias ...

MaMu 20-04-2009 06:05:30

Proba

Código Delphi [-]
 
uses ...., DateUtils;
procedure consultar(Desde,Hasta:Tdate);
Begin    Consulta.Close;
    consulta.Params.ParamByName['ValDesde']:=Desde;
    consulta.Params.ParamByName['ValHasta']:=IncDays(Hasta,1);
    consulta.Open;
End;

Saludos

Kenobi 20-04-2009 15:01:55

Pues la cosa seria...porque
 
Porque debo colocar el array de tipo variant y no de tipo tdate para que funcione ...eso no me cuadra digo es una simple consulta con parametros que se los paso y ya ....


ahora bien en el debbuger cuando audito los valores de los parametros si se los paso como array de tipo tdate sale un entero y si es desde variant una fecha delimitada con comillas simples ....

Gracias por su atencion .....

MaMu 21-04-2009 03:25:47

Es que la fecha en si, es un numero. Si vos usas TDate, solo esta la fecha, y no la hora. Seguramente el campo debe ser TDateTime. He ahi tu problema. Porque las sentencias funcionan perfectamente.

Saludos

rgstuamigo 21-04-2009 21:45:42

Cita:

Empezado por Kenobi (Mensaje 345527)
Porque debo colocar el array de tipo variant y no de tipo tdate para que funcione ...eso no me cuadra digo es una simple consulta con parametros que se los paso y ya ....

Quisas por lo que estas trabajando como tipo variant al hacer esto:
Código Delphi [-]
consulta.Params.ParamValues['ValDesde']:=Desde;//aqui estas asignando u TDate a un Variant
lo mejor es hacerlo asi:
Código Delphi [-]
consulta.Params.ParamByName('ValDesde').AsDate:=Desde;//Aqui pasas un TDate a otro TDate.;)
Pruebalo...:cool:


La franja horaria es GMT +2. Ahora son las 18:02:33.

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