Club Delphi  
    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 22-04-2014
Avatar de Edwardfeliz
Edwardfeliz Edwardfeliz is offline
Miembro
 
Registrado: abr 2014
Posts: 102
Poder: 11
Edwardfeliz Va por buen camino
Filtrado de fecha en SQL Sobre access(Permisivo)

Explico el titulo:

Tengo el siguiente filtrado por SQL:
Código Delphi [-]
begin
with adoquery1 do
begin
close;
SQL.clear;
SQL.Add('Select * from Productos');
SQL.Add('where fecha_Vencimiento >= :Fecha1  AND fecha_Vencimiento <= :Fecha2');
Parameters.ParamByName('Fecha1').Value:= FormatDateTime('dd/mm/yyyy',Datetimepicker1.Date);
Parameters.ParamByName('Fecha2').Value:= FormatDateTime('dd/mm/yyyy',Datetimepicker2.Date);
Open;
end;
end;

tengo dos productos 'A' y 'B'.

el producto A: fecha de vencimiento 23/04/2014
el producto B: fecha de vencimiento 25/05/2014

cuando en el DTP 1 esta la fecha 22/04/2014 y en el DTP 2 esta la fecha 24/04/2014, se filtra bien, y solo muestra un solo registro como debe ser.

Peroooo... cuando el en DTP 2 esta la fecha 25/04/2014, me salen las dos, es decir A y B y B no debe salir porque es del mes 5 no 4

Porque solo toma en cuenta los dias del mes?
Alguien tiene idea de porque?

Saludos!
Responder Con Cita
  #2  
Antiguo 22-04-2014
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
Club Delphi,

Cita:
Empezado por Edwardfeliz
...¿Porque solo toma en cuenta los días del mes?...
Las comparaciones de fecha deben hacerse en formato "yyyy/mm/dd"

Revisa este código:
Código Delphi [-]
with adoquery1 do
begin
   Close;
   SQL.Clear;
   SQL.Add('Select * From Productos');
   SQL.Add('Where Fecha_Vencimiento Between :Fecha1 And :Fecha2');
   Parameters.ParamByName('Fecha1').Value:= FormatDateTime('yyyy/mm/dd',Datetimepicker1.Date);
   Parameters.ParamByName('Fecha2').Value:= FormatDateTime('yyyy/mm/dd',Datetimepicker2.Date);
   Open;
end;
Espero sea útil

Nelson.

Última edición por nlsgarcia fecha: 22-04-2014 a las 06:49:52.
Responder Con Cita
  #3  
Antiguo 22-04-2014
Avatar de Edwardfeliz
Edwardfeliz Edwardfeliz is offline
Miembro
 
Registrado: abr 2014
Posts: 102
Poder: 11
Edwardfeliz Va por buen camino
Cita:
Empezado por nlsgarcia Ver Mensaje
Club Delphi,


Las comparaciones de fecha deben hacerse en formato "yyyy/mm/dd"

Revisa este código:
Código Delphi [-]
with adoquery1 do
begin
   Close;
   SQL.Clear;
   SQL.Add('Select * From Productos');
   SQL.Add('Where Fecha_Vencimiento Between :Fecha1 And :Fecha2');
   Parameters.ParamByName('Fecha1').Value:= FormatDateTime('yyyy/mm/dd',Datetimepicker1.Date);
   Parameters.ParamByName('Fecha2').Value:= FormatDateTime('yyyy/mm/dd',Datetimepicker2.Date);
   Open;
end;
Espero sea útil

Nelson.
el filtrado se queda vacio.

Saludos!
Responder Con Cita
  #4  
Antiguo 22-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 Edwardfeliz.

No me explico el comportamiento que comentas... La lógica de tu condicional es correcta y de echo funciona bién:



El formato de fecha general para Access es, mm/dd/aa dentro de EEUU y dd/mm/aaaa en otro caso. Y a menos que hayas definido un formato personalizado, usará los valores especificados en la configuración regional de Windows.

Es decir que también podrías hacer:
Código Delphi [-]
   ...
   Parameters.ParamByName('FECHA1').Value:= FormatDateTime(ShortDateFormat, DateTimePicker1.Date);
   Parameters.ParamByName('FECHA2').Value:= FormatDateTime(ShortDateFormat, DateTimePicker2.Date);

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #5  
Antiguo 22-04-2014
Avatar de Edwardfeliz
Edwardfeliz Edwardfeliz is offline
Miembro
 
Registrado: abr 2014
Posts: 102
Poder: 11
Edwardfeliz Va por buen camino
Unhappy

Cita:
Empezado por ecfisa Ver Mensaje
Hola Edwardfeliz.

No me explico el comportamiento que comentas... La lógica de tu condicional es correcta y de echo funciona bién:



El formato de fecha general para Access es, mm/dd/aa dentro de EEUU y dd/mm/aaaa en otro caso. Y a menos que hayas definido un formato personalizado, usará los valores especificados en la configuración regional de Windows.

Es decir que también podrías hacer:
Código Delphi [-]
   ...
   Parameters.ParamByName('FECHA1').Value:= FormatDateTime(ShortDateFormat, DateTimePicker1.Date);
   Parameters.ParamByName('FECHA2').Value:= FormatDateTime(ShortDateFormat, DateTimePicker2.Date);

Saludos
entonces es el destino .-. mira:



no se que hacer y mira el codigo:

Código Delphi [-]
procedure TFprincipal.bvencerClick(Sender: TObject);
begin
with adoquery1 do
begin
   Close;
   SQL.clear;
   SQL.Add('Select * from Productos');
   SQL.Add('where fecha_Vencimiento >= :Fecha1  AND fecha_Vencimiento <= :Fecha2');
   Parameters.ParamByName('FECHA1').Value:= FormatDateTime(ShortDateFormat, DateTimePicker1.Date);
   Parameters.ParamByName('FECHA2').Value:= FormatDateTime(ShortDateFormat, DateTimePicker2.Date);
   Open;
end;
end;



Prueba con dos días mas en tu ejemplo.
Saludos!

Última edición por Edwardfeliz fecha: 22-04-2014 a las 16:15:56.
Responder Con Cita
  #6  
Antiguo 22-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 Eduardfeliz.
Cita:
Empezado por Edwardfeliz Ver Mensaje
...
Prueba con dos días mas en tu ejemplo.
No creo que dependa de la amplitud de la toma, en este caso usé el rango 01/04/2014 - 24/05/2014 y sigue filtrando de modo correcto:


Si estas en etapa de pruebas y todavía no tenes información relevante o podes hacer una copia reducida de la tabla, sería interesante que la adjuntaras para poder realizar las pruebas sobre ella.

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #7  
Antiguo 22-04-2014
Avatar de Edwardfeliz
Edwardfeliz Edwardfeliz is offline
Miembro
 
Registrado: abr 2014
Posts: 102
Poder: 11
Edwardfeliz Va por buen camino
Cita:
Empezado por ecfisa Ver Mensaje
Hola Eduardfeliz.

No creo que dependa de la amplitud de la toma, en este caso usé el rango 01/04/2014 - 24/05/2014 y sigue filtrando de modo correcto:


Si estas en etapa de pruebas y todavía no tenes información relevante o podes hacer una copia reducida de la tabla, sería interesante que la adjuntaras para poder realizar las pruebas sobre ella.

Saludos
Acertaste, el problema estaba en la base de datos, el tipo de campo donde estaba la fecha era de texto.



Saludos!
Responder Con Cita
  #8  
Antiguo 22-04-2014
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
Edwardfeliz,

Cita:
Empezado por Edwardfeliz
...el problema estaba en la base de datos, el tipo de campo donde estaba la fecha era de texto...


Nelson.
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
Problemas en el filtrado de una fecha con componente ADO y MySQL zeta2 MySQL 0 13-02-2014 01:02:54
Filtrado por fecha en access gdlrinfo Tablas planas 14 28-03-2008 03:14:28
Campo fecha en access rbeltran Conexión con bases de datos 0 16-12-2004 19:46:34
Filtrado sobre un Campo tipo fkLookUp radiohead Conexión con bases de datos 0 13-12-2004 12:35:29


La franja horaria es GMT +2. Ahora son las 15:30:14.


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