Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 12-07-2010
Avatar de ElDioni
[ElDioni] ElDioni is offline
Miembro Premium
 
Registrado: jul 2005
Ubicación: Murcia (España)
Posts: 935
Poder: 21
ElDioni Va por buen camino
Consulta con hora en access

Buenos días a todos,
he estado buscando por los foros pero no he encontrado algo que me solucione el problema, os cuento, he puesto una consulta de sql

Código Delphi [-]
Adoquery1.SQL.Text:='SELECT * FROM log WHERE destinatario=' + quotedstr(adoquery2.FieldByName('Usuario').AsString) + ' AND leido=false AND (fechaprog<=#'+datetostr(date)+'# AND horaprog<=#'+timetostr(time)+'#)';

Esto me dice que "el objeto parameter está mal definido bla,bla bla", sucede porque la hora lleva en su cadena los dos puntos ( y lo considera un parametro, entonces voy y pongo la hora como parametro y se lo paso desde fuera, me queda así.

Código Delphi [-]
adoquery1.SQL.Text:='SELECT * FROM log WHERE destinatario=' + quotedstr(adoquery2.FieldByName('Usuario').AsString) + ' AND leido=false AND (fechaprog<=#'+datetostr(date)+'# AND horaprog<=#:hora#)';
adoquery1.Parameters.ParamByName('Hora').Value:=time;

Pero entonces me dice que le parametro hora no existe y supongo que es porque considera que el parametro se llama :hora#, me coge la almohadilla como nombre del parametro, pero en access tengo que pasarle las fechas y las horas con almohadillas.

¿Que otra cosa puede probar?, ¿se os ocurre algo?, gracias de antemano y espero que se me haya entendido.

Un saludo.
Responder Con Cita
  #2  
Antiguo 12-07-2010
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 27
Caral Va por buen camino
Hola
Código Delphi [-]
adoquery1.SQL.Text:='SELECT * FROM log WHERE destinatario=' + quotedstr(adoquery2.FieldByName('Usuario').AsString) +
' AND leido = false AND fechaprog <= #'+datetostr(date)+
'# AND horaprog<= :hora';
adoquery1.Parameters.ParamByName('Hora').Value:=time;
Saludos
__________________
Siempre Novato
Responder Con Cita
  #3  
Antiguo 12-07-2010
Avatar de ElDioni
[ElDioni] ElDioni is offline
Miembro Premium
 
Registrado: jul 2005
Ubicación: Murcia (España)
Posts: 935
Poder: 21
ElDioni Va por buen camino
Gracias por responder tan rápido Caral, pero el problema es que si en la hora no le meto las almohadillas, como en la fecha, access no me toma bien la consulta.

En la solución que me pones le quitas las almohadillas que te comento:
Código Delphi [-]
adoquery1.SQL.Text:='SELECT * FROM log WHERE destinatario=' + quotedstr(adoquery2.FieldByName('Usuario').AsString) +
' AND leido = false AND fechaprog <= #'+datetostr(date)+
'# AND horaprog<= :hora';
adoquery1.Parameters.ParamByName('Hora').Value:=time;
Pero yo debería dejarlo así:
Código Delphi [-]
adoquery1.SQL.Text:='SELECT * FROM log WHERE destinatario=' + quotedstr(adoquery2.FieldByName('Usuario').AsString) +
' AND leido = false AND fechaprog <= #'+datetostr(date)+
'# AND horaprog<=#:hora#';
adoquery1.Parameters.ParamByName('Hora').Value:=time;

Y de esta forma, como te comentaba un poco más arriba, me dice que el parametro hora not found (supongo yo que es porque toma el parametro como si fuera :hora#)
Gracias de todas formas por tu ayuda, a ver si se te ocurre algo porque estoy bantante perdido.
Un saludo.
Responder Con Cita
  #4  
Antiguo 12-07-2010
Avatar de Faust
Faust Faust is offline
Miembro
 
Registrado: abr 2006
Ubicación: México D.F.
Posts: 930
Poder: 21
Faust Va por buen camino
Ya me había ocurrido antes y creo que si:

Código Delphi [-]
... + '# AND horaprog<=#:hora#';

Así es, si :hora es un parámetro, lo estás poniendo dentro de un string, lo digo por las comillas.

Porqué no lo haces de esta forma como lo hiciste en el campo anterior???

Código Delphi [-]
... AND fechaprog <= #'+datetostr(date)+

Creo que de alguna manera están interviniendo negativamente las almohadillas en combinación con los dos puntos de tu parámetro, quizás te funcione mejor así.

Código Delphi [-]
... + '# AND horaprog<=#' + DateToStr(TimeHoraProg) + '#';

Saludos
__________________
Herr Heins Faust
Responder Con Cita
  #5  
Antiguo 12-07-2010
Avatar de ElDioni
[ElDioni] ElDioni is offline
Miembro Premium
 
Registrado: jul 2005
Ubicación: Murcia (España)
Posts: 935
Poder: 21
ElDioni Va por buen camino
Hola Faust, gracias a ti también por responder tan rápido,
el caso es que como lo tenía al principio, que era con TimeToStr(time), me suelta el error de "objeto parameter mal definido" y creo que es porque al ser una hora me considera a partir de los dos puntos el parametro (12:16) el parametro sería :16 (o por lo menos creo yo que pasa esto). Si pongo, como me comentas, datetostr(time) me pone, en lugar de una hora, la fecha del 31/12/1899, por lo que tampoco puedo solucionarlo de esta forma, sigo probando cosas, ¿no se podría hacer un cast al valor de SQL y al de delphi para que en vez de una hora comparara un número?, no se, como os digo sigo probando.
Un saludo.
Responder Con Cita
  #6  
Antiguo 12-07-2010
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 27
Caral Va por buen camino
Hola
Código Delphi [-]
var
Hora1: TTime;
begin
Hora1: Now;
ShortDateFormat := '#yyyy/mm/dd#';
adoquery1.SQL.Text:='SELECT * FROM log WHERE destinatario=' + quotedstr(adoquery2.FieldByName('Usuario').AsString) +
' AND leido = false AND fechaprog <= '+datetostr(date)+
' AND horaprog<= :hora';
adoquery1.Parameters.ParamByName('Hora').Value:= FormatDateTime('hh:mm:ss',Hora1);
End;
Saludos
__________________
Siempre Novato
Responder Con Cita
  #7  
Antiguo 12-07-2010
Avatar de Faust
Faust Faust is offline
Miembro
 
Registrado: abr 2006
Ubicación: México D.F.
Posts: 930
Poder: 21
Faust Va por buen camino
Cita:
Empezado por ElDioni Ver Mensaje
...Si pongo, como me comentas, datetostr(time) me pone, en lugar de una hora, la fecha del 31/12/1899...
Ay perdón, ahora si la cagu*... ja ja ja tienes razón es TimeToStr... yo recuerdo que hace unos tres años solucioné esto... pero no me acuerdo como deja pienso un poco.
__________________
Herr Heins Faust
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Consulta SQL con fecha y hora vpepen SQL 0 10-12-2009 17:11:13
Consulta MySQL con fecha y hora Adrian Murua SQL 10 19-11-2007 05:32:08
Grabar hora en Access silver07 Conexión con bases de datos 7 27-09-2007 03:32:42
Problema con hora en consulta SQL coleleon SQL 5 06-12-2005 23:44:57
Introducir Campo hora en Access lroblesco Conexión con bases de datos 2 07-02-2005 23:18:22


La franja horaria es GMT +2. Ahora son las 03:55:27.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi