Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Consulta Rango de Fechas (https://www.clubdelphi.com/foros/showthread.php?t=32727)

soloriv 14-06-2006 19:05:27

Consulta Rango de Fechas
 
Hola a todos, para una tabla que tiene entre otros campos : cantidad, fecha
Deseo hacer una consulta sumando las cantidades en un rango de fechas, para eso hago:

Código Delphi [-]
var
fechadesde,fechahasta:tdatetime;
begin
   fechadesde:=strtodatetime(maskedit1.text);
   fechahasta:=strtodatetime(maskedit2.text);
   with adoquery1 do
   begin
      close;
      sql.clear;
      sql.add('select sum(cantidad) as cant from tabla1 ');
      sql.add('where fecha>=' + formatdatetime('dd/mm/yy',fechadesde));    
      sql.add('and fecha<=' + formatdatetime('dd/mm/yy',fechahasta));
      execsql;
      open
   end
end

Uso tablas acces en ado y la consulta de recien siempre me da ningun registro y obviamente la suma en cero. El tipo de fecha en la tabla es de fecha-hora de tablas creadas en microsoft acces. La intencion es una consulta entre fechadesde y fechahasta
Cualquier ayuda se la agradeceria .
Saludos y Gracias Soloriv

vtdeleon 15-06-2006 00:00:33

Saludos

Usa parametros para esos asuntos. Chequea este hilo que es parecido.

soloriv 16-06-2006 03:31:50

Hola a todos, gracias vtdeleon por responder observe el hilo y lo que dices sobre usar parametros me funciona solo si la consulta la hago en diseño en el componente adoquery porque de otra manera me dice no encuentra parametro parxxxx y si a la consulta de fechas le agrego otro parametros que no usan fechas la consulta me da nula o sin registros y no tiene que ser asi.
Si alguien sabe porque me gustaria saberlo.
Saludos y Gracias Soloriv.

vtdeleon 16-06-2006 05:13:49

Saludos

Muestranos el codigo que utilizas para agregar la consulta y manejo de parametros. Danos los detalles.

soloriv 18-06-2006 00:47:05

Hola,el codigo que uso es el siguiente para dos tablas
1- ctacte : codproducto,cantidad,... ventas realizadas
2- producto:codproducto,producto,... maestro de productos
para una consulta simple que suma las cantidades de los distintos productos en la tabla ctacte con parametros y en un rango de fechas resulta, salvo que tengo que usar el codigo en el componente adoquery. Pero si quiero saber la suma para un determinado producto la consulta es vacia sin darme ningun tipo de error.
En el adoquery hago;
select tp.producto as PRoducto,Sum(tcc.cantidad) As CAntidad
from tablaproducto tp,tablactacte tcc
where tcc.fecha>=:par1 and tcc.fecha<=:par2 and tcc.codproducto=tp.codproducto and tp.producto=:par3
group by tcc.codproducto,tp.producto
el tp.producto del group by me es obligado a poner si no me arroja error.
para la aplicacion delphi el codigo es el sgte:
Código Delphi [-]
with adoquery 1 do
begin
  close;
  parameters.parambyname('par1').datetype:=ftdate;
  parameters.parambyname('par1').value:=formatdatetime ('dd/mm/yy',datetimepicker1.date);
  parameters.parambyname('par2').datetype:=ftdate;
 parameters.parambyname('par2').value:=formatdatetime('dd/mm/yy',datetimepicker2.date);
 parameters.parambyname('par3').value:=dbcombobox1.text;
 open
end
del dbcombobox saco el producto que el usuario quiere hacer la consulta.
Uso ado para el motor jet4.0 y tablas acces creadas desde microsoft acces.
Cualquier sugerencia agradecido
Nota : ahora voy a probar con poner el tp.producto=:par3 en el having para ver si sale ya les cuento.
Saludo y Gracias Soloriv.

soloriv 18-06-2006 00:55:47

Hola el where de la consultas salio con caritas lo corrijo
where tcc.fecha>=: par1 and tcc.fecha<=: par2 and tp.codproducto=tcc.codproducto and tp.producto=: par3
Saludos

vtdeleon 18-06-2006 06:35:02

Saludos

No uses formatdatetime(...) y dejar directo el Datetimepicker.

soloriv 23-06-2006 03:02:03

Hola a todos, gracias vtdeleon por responder, el problema lo resolvi con el primer codigo que creia que estaba mal habia otro error ajeno a sql que era el principal tema asi que el codigo queda para si alguien lo requiera.
Saludos Soloriv


La franja horaria es GMT +2. Ahora son las 07:46:32.

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