este es mi codigo
Código Delphi
[-]with datamodule29.Query2 do
Begin
Close;
SQl.Clear;
SQL.Add('Select idmes from mes where mes=mes');
ParamByName('pmes').AsString:=suiDBLookupComboBox2.Text;
Open;
mes:=FieldByName('idmes').AsInteger;
Close;
SQl.Clear;
SQL.Add('Select * from mes where idmes=idmes');
ParamByName('pidmes').AsInteger:=mes;
Open;
inicio:=FieldByName('inicio').AsString;
fin:=FieldByName('fin').AsString;
Close;
SQL.Clear;
SQL.Add('SELECT C.IDCARRO, C.NOCARRO, C.INDICECONS, SUM(DHR.KMRECORRIDO), SUM(CO.CONSUMO)');
SQL.Add('FROM CARRO C INNER JOIN HOJARUTA HR ON HR.IDCARRO = C.IDCARRO');
SQL.Add('INNER JOIN DESCHOJARUTA DHR ON DHR.IDHOJARUTA = HR.IDHOJARUTA');
SQl.Add('INNER JOIN CONSUMO CO ON CO.IDCARRO = C.IDCARRO');
SQL.Add('WHERE CO.FECHA BETWEEN :FECHA1 AND :FECHA2');
SQL.Add('GROUP BY C.IDCARRO, C.NOCARRO, C.INDICECONS');
SQL.Add('ORDER BY C.IDCARRO');
ParamByName('FECHA1').AsString:=inicio;
ParamByName('FECHA2').AsString:=fin;
Open;
end;
explico
en mi form hay dos combobox
en uno cargo
el año
y en el segundo los meses que trae ese año
cuando doy clic en el boton aceptar
lo primero es escoger el id del mes selecionado y asignarlo a una variable
Código Delphi
[-]Close;
SQl.Clear;
SQL.Add('Select idmes from mes where mes=mes');
ParamByName('pmes').AsString:=suiDBLookupComboBox2.Text;
Open;
mes:=FieldByName('idmes').AsInteger;
luego paso esta variable como condicion para selecionar el rango de fecha del mes ejemplo enero del 2012 es del 01/01/2012 hasta 31/01/2012, y estos valores se lo asigno a dos variables (inicio y fin).
Código Delphi
[-] Close;
SQl.Clear;
SQL.Add('Select * from mes where idmes=idmes');
ParamByName('pidmes').AsInteger:=mes;
Open;
inicio:=FieldByName('inicio').AsString;
fin:=FieldByName('fin').AsString;
luego esas dos variables la paso como parametro de condicion a la consulta que nos esta dando trabajo
Código Delphi
[-]
Close;
SQL.Clear;
SQL.Add('SELECT C.IDCARRO, C.NOCARRO, C.INDICECONS, SUM(DHR.KMRECORRIDO), SUM(CO.CONSUMO)');
SQL.Add('FROM CARRO C INNER JOIN HOJARUTA HR ON HR.IDCARRO = C.IDCARRO');
SQL.Add('INNER JOIN DESCHOJARUTA DHR ON DHR.IDHOJARUTA = HR.IDHOJARUTA');
SQl.Add('INNER JOIN CONSUMO CO ON CO.IDCARRO = C.IDCARRO');
SQL.Add('WHERE CO.FECHA BETWEEN :FECHA1 AND :FECHA2');
SQL.Add('GROUP BY C.IDCARRO, C.NOCARRO, C.INDICECONS');
SQL.Add('ORDER BY C.IDCARRO');
ParamByName('FECHA1').AsString:=inicio;
ParamByName('FECHA2').AsString:=fin;
Open;
espero que con esto haberme pordido explicar bien y puedan entender mi codigo
esta consulta es para ser cargada en un qreport asociado al query
