Ver Mensaje Individual
  #17  
Antiguo 14-09-2012
Salnhack Salnhack is offline
Miembro
NULL
 
Registrado: oct 2011
Ubicación: Cuba
Posts: 71
Reputación: 15
Salnhack Va por buen camino
Unhappy

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
Responder Con Cita