Ver Mensaje Individual
  #9  
Antiguo 29-12-2010
Avatar de anubis
anubis anubis is offline
Miembro
 
Registrado: mar 2007
Posts: 863
Reputación: 18
anubis Va por buen camino
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;
//calculos;
  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.
Responder Con Cita