Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 09-04-2014
barakuda barakuda is offline
Miembro
 
Registrado: mar 2010
Posts: 79
Poder: 15
barakuda Va por buen camino
Consulta ADOQuery

Buenas

tengo otra piedrecita en el camino del aprendizaje y es que tengo que generar una consulta donde la condición es pasar una fecha y hora, si estos datos fueran por separado en la tabla no tendría problema pero, no lo están, 24/03/2014 21:45:00, y mi problema es que no se como entenderme con access cuando le paso la consulta.

Código Delphi [-]
  AdoQuery1.SQL.Clear; 
  ADOQuery1.SQL.Text:='Select * FROM Registro where CreationDate = 25/03/2014 15:21:43; 
  ADOQuery1.Open;

con: CreationDate = 25/03/2014 15:21:43 el mensaje de error es Parámetro mal definido
con: CreationDate = "25/03/2014 15:21:43" el mensaje de error es Se esperaba otro tipo de dato

Los fallos y el pq de los mensajes de error los entiendo y se pq pasan pero no consigo pesarle el formato correcto.

Alguna luz que me ilumine?
Gracias por adelantado

Última edición por ecfisa fecha: 09-04-2014 a las 06:11:51. Razón: etiquetas modo extendido
Responder Con Cita
  #2  
Antiguo 09-04-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola barakuda.

Intenta de modo similar a este ejemplo:
Código Delphi [-]
var
  UnDateTime: string;
begin
  UnDateTime:= '25/03/2014 15:21:43';
  with ADOQuerY1 do
  begin
    Close;
    SQL.Text:= 'SELECT * FROM REGISTRO WHERE CREATIONDATE =:PCREAT';
    Parameters.ParamByName('PCREAT').Value:= StrToDateTime(UnDateTime);
    Open;
    ...
  end;
end;

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 09-04-2014
barakuda barakuda is offline
Miembro
 
Registrado: mar 2010
Posts: 79
Poder: 15
barakuda Va por buen camino
Hola ecfisa, gracias por la ayuda;

He probado el cod. que me comentas, ahora no me da error pero la consulta no me devuelve nada, modificando un poco el cod. he puesto el siguiente:

Código Delphi [-]
Adoquery1.SQL.text:='Select * from Registro where CreationDate = :FecHor'; 
ADOQuery1.Parameters.ParamByName('FecHor').DataType := ftDatetime; 
ADOQuery1.Parameters.ParamByName('FecHor').Value := '24/03/2014 6:01:09';

Pero el resultado es el mismo que con tu cod.
Sospeche que quizás el problema este en la visualización pero simplemente cambie de campo y de dato y la consulta me muestra los datos bien.

sigoinvestigando, alguna idea?
Responder Con Cita
  #4  
Antiguo 09-04-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola barakuda.

No sé que requisitos tiene tu aplicación, pero en principio te diría que buscar una fecha como tipo TDateTime (de tipo Double) es un poco complicado... Es fácil equivocar un minuto, segundo o ms, así que primero que nada revisaría que la fecha ingresada existe como tál.

Lo segundo es que el campo este declarado como Date y envíes a la búsqueda un DateTime o viceversa.

Saludos .)
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #5  
Antiguo 09-04-2014
barakuda barakuda is offline
Miembro
 
Registrado: mar 2010
Posts: 79
Poder: 15
barakuda Va por buen camino
Hola !

He cambiado el ftDataTime por ftDate tienes toda la razon, el dato es del tipo 24/03/2014 5:43:25 y por otro lado en la bbdd, el campo si esta declarado como Fecha/Hora

gracias de nuevo por tus comentarios de ayuda, sigo con la "investigacion"
Responder Con Cita
  #6  
Antiguo 10-04-2014
barakuda barakuda is offline
Miembro
 
Registrado: mar 2010
Posts: 79
Poder: 15
barakuda Va por buen camino
Buenas !!

Gracias ecfisa por tus consejos dejando la cabeza reposar varias oras he conseguido que me funcione, adjunto el código tal cual yo lo voy a emplear:

Código Delphi [-]
Adoquery1.SQL.text:='Select * from Registro where ((CreationDate >= :datos) AND (CreationDate <= :datos2))';
ADOQuery1.Parameters.ParamByName('datos').DataType := ftDate;
ADOQuery1.Parameters.ParamByName('datos2').DataType := ftDate;
ADOQuery1.Parameters.ParamByName('datos').Value := ( '28/03/2014 22:44:59' );
ADOQuery1.Parameters.ParamByName('datos2').Value := ( '29/03/2014 00:44:59' );

Espero que también le pueda ser de ayuda a alguien mas, por mi parte quito esa piedrecita del camino rocoso del mi aprendizaje.

un saludo y gracias!
Responder Con Cita
  #7  
Antiguo 10-04-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Me alegra que lo hayas solucionado , y muchas gracias por enseñarnos como lo hiciste

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #8  
Antiguo 10-04-2014
barakuda barakuda is offline
Miembro
 
Registrado: mar 2010
Posts: 79
Poder: 15
barakuda Va por buen camino
Buenas, de nuevo;
Añadir a lo anterior que; el cod anterior es para traerme unas determinadas fechas pero si lo que queremos es comprobar si existe una fecha en concreto uso el siguiente cod.:

Código Delphi [-]
Adoquery1.SQL.text:='Select * from Registro where CreationDate like :datos';
ADOQuery1.Parameters.ParamByName('datos').DataType := ftDate;
ADOQuery1.Parameters.ParamByName('datos').Value := ( '24/03/2014 5:43:25' );

Gracias a vosotros y a toda la gente que comparte sus conocimientos.

un saludo!!
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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 con Adoquery agustin173 Varios 5 10-06-2010 13:57:28
Consulta con Adoquery agustin173 Conexión con bases de datos 2 09-06-2010 22:18:09
Consulta SQL en ADOQuery epenor Conexión con bases de datos 7 29-09-2008 05:16:27
consulta adoquery Yensis22 SQL 1 15-06-2008 22:09:03
consulta con un adoQuery manu Conexión con bases de datos 4 29-09-2006 01:17:48


La franja horaria es GMT +2. Ahora son las 13:32:51.


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
Copyright 1996-2007 Club Delphi