PDA

Ver la Versión Completa : Ayuda SQL Between con rango de fechas


darkbits
12-04-2010, 15:57:53
Un saludo al club ,
mira tengo problemas q no se como resolver con fechas
realizo esta consulta donde sDateEdit1.Date=01/04/2010 y sDateEdit2.Date= 12/04/2010 son mis 2 rangos de fechas y cuando ejecuto la consulta me da todos los resultados entre 01 al 12 sin importar el mes ni año, Help ME please.. como soluciono este detalle, probe de todo para que filtre y nada probe con 01-04-2010 al 12-04-2010 y si funciona bien!
pero toda el sistema esta para --/--/-- toy trabajando con delphi 6


_DM.ADOsqlRV.Close;
_DM.ADOsqlRV.SQL.Text:='SELECT fecha, hora,det_producto FROM venta WHERE venta BETWEEN DateTimeToStr(sDateEdit1.Date) and DateTimeToStr(sDateEdit2.date) order by fecha ASC';
_DM.ADOsqlRV.Open;



Muchisimas gracias.!

Galahad
12-04-2010, 16:27:15
Buenas,,,
yo te recomendaria utilizar parámetros en las consultas, sobre todo con
fechas simplifican muchos problemas, la consulta quedaria así.

_DM.ADOsqlRV.Close;
_DM.ADOsqlRV.SQL.Text:='SELECT fecha, hora,det_producto
FROM venta WHERE venta BETWEEN
:fechadesde and :fechahasta order by fecha ASC';
_dm.adosqlrv.parambyname('fechadesde').value := strtodate( editfechadesde);
_dm.adosqlrv.parambyname('fechahasta').value := strtodate( editfechahasta);
_DM.ADOsqlRV.Open;
Por otro lado,, cuidado con utilizar datetimetostr, ten en cuenta que esa
función utiliza tambien la hora para filtrar , deberias de utilizar
datetostr (solo la fecha)..

Espero te ayude....

darkbits
12-04-2010, 21:00:05
Gracias por su ayuda,
pero persiste el detalle le doy rango de sDateEdit1.text=01/04/2010 al sDateEdit2.text=12/04/2010 y me da todos los valores del 01...al ..14 de cualquier mes no solo de 04 eso qu ya estoy utilizando parametros.
estoy con una base de datos de acces...

Help Me Please.



_DM.ADOsqlRV.Close;
_DM.ADOsqlRV.SQL.Text:='SELECT fecha, hora, id_us, det_producto,serial, garantia, cantidad, cadaUno, venta_bs, venta_US,utilidad
FROM detalle_venta, venta WHERE venta.pago="CONTADO" and venta.id_ventas= detalle_venta.id_ventas and venta.fecha BETWEEN :fechaInicio and :fechaFinal and venta.id_us="'+DBLookupComboBox1.Text+'"order by fecha ASC';
_dm.adosqlrv.Parameters.ParamByName('fechaInicio').Value :=strtodate(
sDateEdit1.text);
_dm.adosqlrv.Parameters.ParamByName('fechaFinal').value :=strtodate(
sDateEdit2.text);
_DM.ADOsqlRV.Open;


gracias por sus ayudas...

_dm.adosqlrv.Parameters.ParamByName('fechaInicio').Value :=strtodate(
sDateEdit1.text);
_dm.adosqlrv.Parameters.ParamByName('fechaFinal').value :=strtodate(
sDateEdit2.text);
_DM.ADOsqlRV.Open;





gracias por sus ayudas...

fidel
14-04-2010, 22:31:30
Con parámetros debería de funcionar, pero si no, cambia el formato de fecha que tienes de día/mes/año por este de mes/día/año. Quizás por eso te devuelve solo valores entre 1 y 12. Pruebalo a ver si funciona.