gracias de nuevo.
Bien como me he debido de liar yo solo, creo y, a pesar de hacer funcionar el programa a nivel dbgrid con filtro, se me resiste el poder sumar en funcion de lo que me aparece en el dbgrid, pero no encuentra los campos.
No quiero pretender que sea un curso acelerado de sql
, sino mas bien una pequeña orientacion sobre, me imagino, algo tan básico como esto.
Pongo las lineas donde hago lo que me dices:
En el formcreate tengo esto:
Código Delphi
[-]
zconnection1.Database:='g:\leerdes\ventas.fdb';
zconnection1.Connected:=true;
qventas.SQL.Text:='select * from lineasventa';
qventas.IndexFieldNames:='codigo';
qventas.Active:=true;
Tengo un zconnection, un zquery(ventas) unido al zconnection, un datasource unido al query y un dbgrid unido al datasource.
En pantalla tengo un dbgrid con sus columnas respectivas, 2 introduccion de fechas y 2 de horas y un un checkbox.
Cuando arranco el programa me muestra todos los registros de la tabla.
si le meto las fechas y horas solo, el dbgrid me muestra los que cumplen el rango:
Código Delphi
[-]
if checkbox1.Checked=true then
begin
qventas.SQL.clear;
qventas.Active:=False;
qventas.Close;
qventas.Sql.Text:='SELECT * FROM lineasventa WHERE FECHA>=:FECHANAC1 AND FECHA<=:FECHANAC2 and hora>=:hora1 and hora<=:hora2';
qventas.ParamByName('FECHANAC1').AsDate:=dateedit1.Date;
qventas.ParamByName('FECHANAC2').AsDate:=dateedit2.Date;
qventas.ParamByName('hora1').Astime:=strtotime(maskedit1.Text);
qventas.ParamByName('hora2').Astime:=strtotime(maskedit2.text);
qventas.open;
qventas.Filtered:=true;
dateedit1.Enabled:=false;
dateedit2.Enabled:=false;
maskedit1.Enabled:=false;
maskedit2.enabled:=false;
qventas.SQL.clear;
qventas.close;
qventas.SQL.Text:='select sum(importe) as sumaa from lineasventa And FECHA between :FECHANAC1 AND :FECHANAC2 and hora between :hora1 and :hora2';
qventas.ParamByName('FECHANAC1').AsDate:=dateedit1.Date
qventas.ParamByName('FECHANAC2').AsDate:=dateedit2.Date;
qventas.ParamByName('hora1').Astime:=strtotime(maskedit1.Text);
qventas.ParamByName('hora2').Astime:=strtotime(maskedit2.text);
qventas.Open;
end
else
begin
qventas.Active:=False;
qventas.SQL.clear;
qventas.sql.text:='select * from lineasventa';
qventas.Active:=true;
dateedit1.Enabled:=true;
dateedit2.Enabled:=true;
maskedit1.Enabled:=true;
maskedit2.enabled:=true;
end;
end;
Al ejecutar el programa me da error en esta linea:
Código Delphi
[-]
qventas.SQL.Text:='select sum(importe) as sumaa from lineasventa And FECHA between :FECHANAC1 AND :FECHANAC2 and hora between :hora1 and :hora2'
donde pone :hora1 y etc, me salen interrogantes ademas dice invalid token.
Si no pongo el tema de la suma no hay problema, me aplica el filtro.
Que estoy haciendo mal?.
gracias nuevamente.
pd: por cierto marcoszorrilla, tambien soy de cantabria, de santander mas concretamente, pero estoy fuera del pais hace ya 4 años y si, tengo morrilla snif, snif snif.