PDA

Ver la Versión Completa : pregunta de fecha hora


omy
17-12-2008, 21:18:27
hola busque antes de hacer la pregunta pero no vi nada de este problemita...
La cuestion es la siguiente:

Tengo un ADOquery en el cual hago esto

Aqventas.SQL.Clear;
AQventas.SQL.Add(sql);
AQventas.Active := true;

donde sql tiene esto "select * from tabla where serie1 <> 0 and hora Between #12/08/2008 13:21:46# And #12/08/2008 15:21:46# "

hora es un campo fecha hora de access

cuanto corro mi programa me manda el siguiente error
"OIbjeto paramete mal definido. Se proporciono informacion incompleta o incoherente". saco este sql y lo pruebo en una consulta de access y sirve bien... en ke la estoy regando

Neftali [Germán.Estévez]
18-12-2008, 10:07:37
El problema de Access es que la sintaxis que utiliza, no es la misma en algunos casos que utiliza ADO (si atacas directamente al motor de Jet4).
Me da la imporesión de que debe ser por el tema de Fechas y horas.

(1) Para hacer la prueba, intenta primero utilizar comillas, en lugar de #
(2) Prueba a actualizar sólo fecha a ver si funciona, para detertar si el problema es en la hora.

PepeLolo
20-12-2008, 02:48:06
En cualquier motor de bases de datos para utilizar campos de fechas y horas en consultas lo mejor es usar parámetros CERO problemas.


Aqventas.SQL.Clear;
AQventas.SQL.Add(sql);

donde sql tiene esto "select * from tabla where serie1 <> 0 and hora Between :HoraI And :HoraF"

AQVentas.Parameters.ParamByName('HoraI').AsDateTime := TuPeriodoInicial;
AQVentas.Parameters.ParamByName('HoraI').AsDateTime := TuPeriodoFinal
AQventas.Active := true;


Revisa en la ayuda la propiedad Parameters, no me acuerdo bien si es así en ADO.:rolleyes:

omy
22-12-2008, 16:54:21
(1) Para hacer la prueba, intenta primero utilizar comillas, en lugar de #
(2) Prueba a actualizar sólo fecha a ver si funciona, para detertar si el problema es en la hora.



si era la sintaxis no puedo usar ":" lo toma como parametro
entonces solo lo cambie por el "." en el parametro de horas, solo voy a probrar si el codio de pepelolo no falla por los ":" en la hora ...

Gracias......

tvaly
03-01-2009, 22:28:22
El codigo de pepelolo no fallaria, ya que los valores que les pases a los parametros lo harias en tiempo de ejecucion y si miras bien el codigo dice AsDateTime, eso permite que el mismo programa acomode los datos pasados al formato preestablecido del motor que uses (ya que te sirve para cualquier motor, sea Access o MySQL o cualquier otro)
Otra cosa muy importante es que el codigo de pepelolo te permite mas flexibilidad, ya que no sera necesario cambiar el sql cada vez que tu periodo de consulta sea modificado, cosa que no es poco importante.
Saludos