Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   pregunta de fecha hora (https://www.clubdelphi.com/foros/showthread.php?t=62347)

omy 17-12-2008 21:18:27

pregunta de fecha hora
 
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.

Código Delphi [-]
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

lo resolvi
 
Código Delphi [-]
 

(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


La franja horaria es GMT +2. Ahora son las 15:37:09.

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