Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 04-07-2007
Avatar de saldanaluis
saldanaluis saldanaluis is offline
Miembro
 
Registrado: nov 2006
Ubicación: Monterrey NL México
Posts: 122
Poder: 18
saldanaluis Va por buen camino
Question ADOQuery con SQL y ACCESS seleccionando por fechas

Hola, Tengo una situación que espero me puedan apoyar.
Tengo un SQL donde selecciono registros de una tabla con limites de fechas.
El asunto es que la fecha de limite superior como que no lo está tomando correctamente. El SQL es algo como esto:
SELECT * FROM TABLA
WHERE FECHA >= FECHA1
AND FECHA <= FECHA2
Tengo registros con fecha de los dias 1,2 y 3, si le pongo la FECHA1 como dia 1 y la FECHA2 como dia 3, solo me selecciona los registros de los dias 1 y 2.
Además, si le pongo la misma fecha a la FECHA1 y FECHA2 para tener los registros de un solo dia, no me selecciona nada.
Como ven en el título, estoy utilizando TADOQuery con ACCESS.
¿Que puedo hacer con esta situación? Gracias por su valiosa ayuda.
Responder Con Cita
  #2  
Antiguo 04-07-2007
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
A simple vista la consulta está bien formulada, posibles fallos, el formato de fecha en SQL debe de ser mm/dd/yyyy, Access utiliza la almohadilla # para delimitar las fechas.

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #3  
Antiguo 04-07-2007
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.286
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
También miraría posibles problemas relacionados con la hora; A veces sin darnos cuenta no tenemos en cuenta eso y en la BD y/o en el programa éstán almacenados los campos de forma distinta (en uno con heras y en otro no).
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #4  
Antiguo 04-07-2007
Avatar de saldanaluis
saldanaluis saldanaluis is offline
Miembro
 
Registrado: nov 2006
Ubicación: Monterrey NL México
Posts: 122
Poder: 18
saldanaluis Va por buen camino
Gracias a ambos. Voy a tomar en consideración ambos comentarios. Pero ahora me salta una duda. Eso de las almohadilla # para delimitar las fechas. Esto quiere decir que le tengo que especificar de esta manera:
Cita:
WHERE FECHA = #FECHA1#
Gracias
Responder Con Cita
  #5  
Antiguo 04-07-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Código Delphi [-]
ShortDateFormat := '#yyyy/mm/dd#';
ADOQuery1.SQL.Text:= 'SELECT * FROM TABLA';
ADOQuery1.SQL.Add(' WHERE Fecha >= '+DateToStr(DateTimePicker1.Date)+' AND Fecha <= '+DateToStr(DateTimePicker2.Date));
ADOQuery1.Open;
Esta es una manera de hacerlo, hay otras.
Como ves en este caso es sin parametros, se utiliza en DateTimePicker.
Saludos
Responder Con Cita
  #6  
Antiguo 04-07-2007
Avatar de aldmoscardi
aldmoscardi aldmoscardi is offline
Miembro
 
Registrado: oct 2006
Posts: 38
Poder: 0
aldmoscardi Va por buen camino
Bueno, el problema no esta en tu consulta, sino que en el acces, lo que deves hacer es utilizar una consulta parametrizada, y cuando le pases los parametros utiliza la funcion FormatDateTieme(formato, fecha) donde en el campo formato le pasaras 'dd/MM/yyyy' y en el formato fecha el tipo datetime, calculo que proviene de un DateTimePicker1 por consecuente te quedaria algo asi como:

Código Delphi [-]
Query1.close;
Query1.Parameters.ParamByName('Fecha1').Value := FormatdateTime('dd/MM/yyyy', DateTimePicker1.Date)

Query1.Parameters.ParamByName('Fecha2').Value := FormatdateTime('dd/MM/yyyy', DateTimePicker2.Date)
Query1.Open;

y la consulta deveria ser algo como esto

Código SQL [-]
SELECT * FROM tabla1 WHERE (fecha >= :Fecha1) AND (fecha <= :Fecha2)


Espero te sirva, saludos
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
fechas hasia access alfil123 Conexión con bases de datos 5 30-12-2005 00:31:18
Problemas Access + Fechas + ADO JanoRod Tablas planas 3 14-11-2005 16:03:36
Conexion De Un Adoquery Con Access perillan Conexión con bases de datos 3 14-06-2005 08:14:08
Problema con las fechas en Access fmonte Varios 4 10-11-2004 11:07:42
como concatenar fechas y string en access Jet 4 orfeo SQL 1 25-06-2004 14:56:12


La franja horaria es GMT +2. Ahora son las 07:41:59.


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