PDA

Ver la Versión Completa : problema con consulta.


jsanchez
20-05-2003, 02:04:50
Hola foro,

Tengo un pequeño problema con una consulta.

with DMModuloDatos.QVentas do
begin
Close;
sql.clear;
SQL.add('Select Distinct NombreProducto, sum(cantidad) as Cantidad, sum(PrecioExento) as Pagado ');
SQL.add(' from HistoricoCaja, ProduTienda ');
SQL.add('where sum(PrecioExento) > :M1 and sum(PrecioExento)< :M2 and ');
SQL.add('HoraVenta < :HoraF and HoraVenta> :HoraI and ');
SQL.add('FechaVenta Between :FechaI and :FechaF and');
SQL.add(' HistoricoCaja.CodigoProducto=PRoduTienda.CodigoProducto and ');
SQL.add('ProduTienda.CodigoProducto like :Prod');
SQL.add(' Group by NombreProducto order by NombreProducto');
Prepare;
Params[0].AsFloat:=StrToFloat(Edit2.Text);
Params[1].AsFloat:=StrToFloat(Edit3.Text);
Params[2].AsTime:=StrToTime(HoraF);
Params[3].AsTime:=StrToTime(HoraI);
Params[4].AsDate:=StrToDate(Fecha);
Params[5].AsDate:=StrToDate(FechaF);
Params[6].AsDate:=Eprod.Text;
Open;
end;


El problema está en la línea

SQL.add('where sum(PrecioExento) > :M1and sum(PrecioExento)
< :M2 and ');

me da el error: Capability not suported.

Eso que quiere decir que no puedo hacer esa consulta?

Yo lo que quiero mostrar son los datos en los que la suma del precioExento esté entre unos límites. No es permitido?

El otro problema es que al quitar esas condiciones la sentencia funciona perfectamente, pero es un "pelín" lenta. Habría alguna manera de hacer la misma consulta pero más rápido?

Bueno, muchas gracias por todo.

delphi.com.ar
20-05-2003, 02:29:49
Es que no podés poner funciones de Grupo en un WHERE, en lugar del WHERE vas a tener que usar un HAVING, que a grandes rasgos es el WHERE para grupos.

....
Group by NombreProducto order by NombreProducto'
HAVING sum(PrecioExento) > :M1
AND sum(PrecioExento) < :M2

jsanchez
20-05-2003, 19:35:55
muchas gracias, por la ayuda.

Pequeño detalle ese del having.

gracias de nuevo, voy a probarlo.