Retornar dados consulta / relatório
Olá amigos Delpianos!
Tenho 2 tbls Receita e Saida preciso fazer a consulta por uma determinada data onde depois de trazer os dados na tela via dbgrid me mostre o saldo e na sequencia eu chame o relatário Qreport que ira visualizar o saldo antes de imprimir abaixo o código que estou tentando e não está dando certo, gostaria que aparecesse pelo menos assim: TOTAL - SUBTOTAL=SALDO.
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add(Select SUM(Frete+Frete1+Frete2)as TOTAL From Receita UNION ALL Select (OilGas+Auxiliar+Refeicao+Conserto+Imposto) from Saida);
Query1.SQL.Add(Where DATA between :Inicial and :Final);
Query1.Parameters.ParamByName(Inicial).Value := StrToDate(MaskEdit0.Text);
Query1.Parameters.ParamByName(Final).Value := StrToDate(MaskEdit1.text);
Query1.Open;
If Query1.isEmpty then
ShowMessage(Não há registros entre as datas informadas!);
//Aqui faço a consulta porem só aparece o valor dentro do campo total, subtotal e saldo está em branco, onde estou errando?... abaixo chamo o relatório que falta fazer ajustes ele até funciona!
procedure TForm1.btnRelSaldoClick(Sender: TObject);
begin
Form1.Query1.Close;
Form1.Query1.SQL.Clear;
Form1.Query1.SQL.Add(Select SUM(Frete+Frete1+Frete2)as TOTAL From Receita UNION ALL Select SUM (OilGas)as SUBTOTAL From Saida);
Form1.Query1.SQL.Add(Where DATA between :Inicial and :Final);
Form1.Query1.Parameters.ParamByName(Inicial).Value := StrToDate(MaskEdit0.Text);
Form1.Query1.Parameters.ParamByName(Final).Value := StrToDate(MaskEdit1.text);
Form1.Query1.ExecSQL;
if Query1.IsEmpty then
ShowMessage(Não há dados para serem mostrados no relatório)
else
frmRelSaldo.QuickRepSaldo.Preview;
end;
Delphi 7 bd Acess 2003
Tenho 2 tbls Receita e Saida preciso fazer a consulta por uma determinada data onde depois de trazer os dados na tela via dbgrid me mostre o saldo e na sequencia eu chame o relatário Qreport que ira visualizar o saldo antes de imprimir abaixo o código que estou tentando e não está dando certo, gostaria que aparecesse pelo menos assim: TOTAL - SUBTOTAL=SALDO.
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add(Select SUM(Frete+Frete1+Frete2)as TOTAL From Receita UNION ALL Select (OilGas+Auxiliar+Refeicao+Conserto+Imposto) from Saida);
Query1.SQL.Add(Where DATA between :Inicial and :Final);
Query1.Parameters.ParamByName(Inicial).Value := StrToDate(MaskEdit0.Text);
Query1.Parameters.ParamByName(Final).Value := StrToDate(MaskEdit1.text);
Query1.Open;
If Query1.isEmpty then
ShowMessage(Não há registros entre as datas informadas!);
//Aqui faço a consulta porem só aparece o valor dentro do campo total, subtotal e saldo está em branco, onde estou errando?... abaixo chamo o relatório que falta fazer ajustes ele até funciona!
procedure TForm1.btnRelSaldoClick(Sender: TObject);
begin
Form1.Query1.Close;
Form1.Query1.SQL.Clear;
Form1.Query1.SQL.Add(Select SUM(Frete+Frete1+Frete2)as TOTAL From Receita UNION ALL Select SUM (OilGas)as SUBTOTAL From Saida);
Form1.Query1.SQL.Add(Where DATA between :Inicial and :Final);
Form1.Query1.Parameters.ParamByName(Inicial).Value := StrToDate(MaskEdit0.Text);
Form1.Query1.Parameters.ParamByName(Final).Value := StrToDate(MaskEdit1.text);
Form1.Query1.ExecSQL;
if Query1.IsEmpty then
ShowMessage(Não há dados para serem mostrados no relatório)
else
frmRelSaldo.QuickRepSaldo.Preview;
end;
Delphi 7 bd Acess 2003
Lauro
Curtidas 0
Respostas
Geversom Sousa
18/10/2011
a sua consulta usando UNION não conseguirá retornar os valores da maneira como você deseja,recomendo que você use um sub-consulta, conforme exemplo abaixo:
Recomendo que você use sempre Alias para as tabelas, o que facilita a compreensão do codigo
procedure TForm1.BitBtn1Click(Sender: TObject); begin Query1.Close; Query1.SQL.Clear; Query1.SQL.Add( Select SUM(RC.Frete + RC. Frete1 + RC.Frete2 ) as TOTAL, ); Query1.SQL.Add( (Select SUM(SD.OilGas + SD.Auxiliar + SD.Refeicao + SD.Conserto + SD.Imposto) ); Query1.SQL.Add( from Saida SD ); Query1.SQL.Add( Where SD.DATA between :Inicial and :Final) as SUBTOTAL ); Query1.SQL.Add( From Receita RC ); Query1.SQL.Add( Where RC.DATA between :Inicial and :Final ); Query1.Parameters.ParamByName(Inicial).Value := StrToDate(MaskEdit0.Text); Query1.Parameters.ParamByName(Final).Value := StrToDate(MaskEdit1.text); Query1.Open; If Query1.isEmpty then ShowMessage(Não há registros entre as datas informadas!); end.
Recomendo que você use sempre Alias para as tabelas, o que facilita a compreensão do codigo
GOSTEI 0