Totalização em relatorio usando paradox com delphi
Amigos,
por favor me ajudem. Tenho uma tabela paradox com os seguintes campos:
controle +
codigo A 3
Conta a 30
valor N
data D
tipo A 1 ---> este tipo determina se o codigo é uma receita ou uma despesa
Em um dos relatórios, o de depuração dos lançamentos, (usando qreport) na aba "detail" listo apenas codigo, conta e valor,
e quando tem codigos repetidos, saem repetidos cada um com seu valor ( para fazer conferencia do que foi digitado)
e atraves de um laço While...do, somo todos os valores e os imprimo. até este ponto esta me atendendo.
PROBLEMA
Preciso fazer um segundo relatorio onde estes lançamentos saiam agrupados por códigos relativos a RECEITAS e a DESPESAS,
sem repeti-los mas somando-os. Teria as seguintes colunas:
===============================================
código conta total
==============================================
O campo detalhe teria um layout semelhante a:
--------------------------------------------------------------------------------
RECEITAS
001 - DIZIMOS 200,00
001 - VOTOS 40,00
total das receitas 240,00
DESPESAS
010 - ÁGUA 80,00
011 - lUZ 110,00
022 - COMBUSTIVEL 300,00
total das despesas 490,00
------------------------------------------------------------------------
sumário ...
MEU PROBLEMA:
fiz a seguinte SQL:
soma := 0;
Dtm_Secre.qLanca_Despesa.Close;
Dtm_Secre.qLanca_Despesa.Sql.Clear;
Dtm_Secre.qLanca_Despesa.Sql.Add('Select distinct codigo, sum(valor) as soma from lanca_despesa group by codigo');
Dtm_Secre.qLanca_Despesa.ExecSql;
Dtm_Secre.qLanca_Despesa.Open;
QrLabel9.Caption := FormatFloat('#,##0.00',soma);
quando executo o relatório dá mensagem de erro ((field controle Dtm_Secre.qLanca_Despesa.Close;
Dtm_Secre.qLanca_Despesa.Sql.Clear;
Dtm_Secre.qLanca_Despesa.Sql.Add('Select distinct codigo, sum(valor) as soma from lanca_despesa ');
Dtm_Secre.qLanca_Despesa.ExecSql;
Dtm_Secre.qLanca_Despesa.Open;
//QrLabel9.Caption := FormatFloat('#,##0.00',soma);
Quando Executo o relatório dá erro com a seguinte mensagem:
<<qLanca_despesa: field'controle' not found>>
Por favor, preciso solucionar urgente este problema.
em tempo, usando o executor de sql do DataBase Desktop com a SQL acima, retorna corretamente o que preciso, mas quando a incluo
no corpo do programa dá o erro.
abaixo o codigo-fonte do relatorio no estado em que esta.
att
gilberto
unit U_Despesa04;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, QRCtrls, QuickRpt;
type
Tfrm_Despesa04 = class(TForm)
qrp_Despesa04: TQuickRep;
ColumnHeaderBand1: TQRBand;
DetailBand1: TQRBand;
SummaryBand1: TQRBand;
TitleBand1: TQRBand;
QRLabel1: TQRLabel;
QRLabel2: TQRLabel;
QRSysData1: TQRSysData;
QRLabel3: TQRLabel;
QRLabel4: TQRLabel;
QRLabel5: TQRLabel;
QRLabel6: TQRLabel;
QRDBText1: TQRDBText;
QRDBText2: TQRDBText;
QRDBText3: TQRDBText;
QRDBText4: TQRDBText;
QRLabel7: TQRLabel;
QRLabel8: TQRLabel;
QRDBText5: TQRDBText;
QRLabel9: TQRLabel;
procedure DetailBand1BeforePrint(Sender: TQRCustomBand;
var PrintBand: Boolean);
procedure FormShow(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure SummaryBand1BeforePrint(Sender: TQRCustomBand;
var PrintBand: Boolean);
procedure qrp_Despesa04BeforePrint(Sender: TCustomQuickRep;
var PrintReport: Boolean);
private
{ Private declarations }
Soma : Currency;
vSubtotal : currency;
gZebrado: Boolean;
vCodigo : String;
public
{ Public declarations }
end;
var
frm_Despesa04: Tfrm_Despesa04;
implementation
uses U_DtmSecre;
{$R *.dfm}
procedure Tfrm_Despesa04.DetailBand1BeforePrint(Sender: TQRCustomBand;
var PrintBand: Boolean);
begin
if ( gZebrado ) then
Sender.Color:= $00EEEEEE
else
Sender.Color:= $00FFFFFF;
gZebrado:= not gZebrado;
end;
procedure Tfrm_Despesa04.FormShow(Sender: TObject);
begin
Dtm_Secre.qLanca_Despesa.Open;
end;
procedure Tfrm_Despesa04.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
Dtm_Secre.qLanca_Despesa.Close;
end;
procedure Tfrm_Despesa04.SummaryBand1BeforePrint(Sender: TQRCustomBand;
var PrintBand: Boolean);
begin
//soma := 0;
Dtm_Secre.qLanca_Despesa.Close;
Dtm_Secre.qLanca_Despesa.Sql.Clear;
Dtm_Secre.qLanca_Despesa.Sql.Add('Select distinct codigo, sum(valor) as soma from lanca_despesa group by codigo');
Dtm_Secre.qLanca_Despesa.ExecSql;
Dtm_Secre.qLanca_Despesa.Open;
//QrLabel9.Caption := FormatFloat('#,##0.00',soma);
(* Dtm_Secre.qLanca_Despesa.Open;
Dtm_Secre.qLanca_Despesa.First;
Soma := 0;
vSubtotal := 0;
vCodigo := Dtm_Secre.qLanca_DespesaCodigo.AsString;
while not Dtm_Secre.qLanca_Despesa.Eof do
begin
if Dtm_Secre.qLanca_DespesaCodigo.AsString = vCodigo then
begin
vSubtotal := vSubtotal + Dtm_Secre.qLanca_DespesaValor.Value;
Dtm_Secre.qLanca_Despesa.Next;
end
Else
begin
qrLabel7.Caption := 'Soma do código ' + Dtm_Secre.qLanca_DespesaCodigo.AsString + ' - ' + Dtm_Secre.qLanca_DespesaConta.AsString + ' ';
QrLabel8.Caption := FormatFloat('#,##0.00',vSubtotal);
soma := soma + vSubtotal;
vSubtotal := 0;
vCodigo := Dtm_Secre.qLanca_DespesaCodigo.AsString;
End;
end;
// qrLabel7.Caption := 'Total Geral das Despesas: ';
// QrLabel8.Caption := FormatFloat('#,##0.00',soma);
//
// soma := 0;
// Dtm_Secre.qLanca_Despesa.Open;
// While not Dtm_Secre.qLanca_Despesa.eof do
// begin
// soma := soma + Dtm_Secre.qLanca_DespesaValor.Value;
// Dtm_Secre.qLanca_Despesa.next;
// end;
/// QrLabel8.Caption := FormatFloat('#,##0.00',soma);
*)
end;
procedure Tfrm_Despesa04.qrp_Despesa04BeforePrint(Sender: TCustomQuickRep;
var PrintReport: Boolean);
begin
Dtm_Secre.qLanca_Despesa.Open;
end;
end.
por favor me ajudem. Tenho uma tabela paradox com os seguintes campos:
controle +
codigo A 3
Conta a 30
valor N
data D
tipo A 1 ---> este tipo determina se o codigo é uma receita ou uma despesa
Em um dos relatórios, o de depuração dos lançamentos, (usando qreport) na aba "detail" listo apenas codigo, conta e valor,
e quando tem codigos repetidos, saem repetidos cada um com seu valor ( para fazer conferencia do que foi digitado)
e atraves de um laço While...do, somo todos os valores e os imprimo. até este ponto esta me atendendo.
PROBLEMA
Preciso fazer um segundo relatorio onde estes lançamentos saiam agrupados por códigos relativos a RECEITAS e a DESPESAS,
sem repeti-los mas somando-os. Teria as seguintes colunas:
===============================================
código conta total
==============================================
O campo detalhe teria um layout semelhante a:
--------------------------------------------------------------------------------
RECEITAS
001 - DIZIMOS 200,00
001 - VOTOS 40,00
total das receitas 240,00
DESPESAS
010 - ÁGUA 80,00
011 - lUZ 110,00
022 - COMBUSTIVEL 300,00
total das despesas 490,00
------------------------------------------------------------------------
sumário ...
MEU PROBLEMA:
fiz a seguinte SQL:
soma := 0;
Dtm_Secre.qLanca_Despesa.Close;
Dtm_Secre.qLanca_Despesa.Sql.Clear;
Dtm_Secre.qLanca_Despesa.Sql.Add('Select distinct codigo, sum(valor) as soma from lanca_despesa group by codigo');
Dtm_Secre.qLanca_Despesa.ExecSql;
Dtm_Secre.qLanca_Despesa.Open;
QrLabel9.Caption := FormatFloat('#,##0.00',soma);
quando executo o relatório dá mensagem de erro ((field controle Dtm_Secre.qLanca_Despesa.Close;
Dtm_Secre.qLanca_Despesa.Sql.Clear;
Dtm_Secre.qLanca_Despesa.Sql.Add('Select distinct codigo, sum(valor) as soma from lanca_despesa ');
Dtm_Secre.qLanca_Despesa.ExecSql;
Dtm_Secre.qLanca_Despesa.Open;
//QrLabel9.Caption := FormatFloat('#,##0.00',soma);
Quando Executo o relatório dá erro com a seguinte mensagem:
<<qLanca_despesa: field'controle' not found>>
Por favor, preciso solucionar urgente este problema.
em tempo, usando o executor de sql do DataBase Desktop com a SQL acima, retorna corretamente o que preciso, mas quando a incluo
no corpo do programa dá o erro.
abaixo o codigo-fonte do relatorio no estado em que esta.
att
gilberto
unit U_Despesa04;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, QRCtrls, QuickRpt;
type
Tfrm_Despesa04 = class(TForm)
qrp_Despesa04: TQuickRep;
ColumnHeaderBand1: TQRBand;
DetailBand1: TQRBand;
SummaryBand1: TQRBand;
TitleBand1: TQRBand;
QRLabel1: TQRLabel;
QRLabel2: TQRLabel;
QRSysData1: TQRSysData;
QRLabel3: TQRLabel;
QRLabel4: TQRLabel;
QRLabel5: TQRLabel;
QRLabel6: TQRLabel;
QRDBText1: TQRDBText;
QRDBText2: TQRDBText;
QRDBText3: TQRDBText;
QRDBText4: TQRDBText;
QRLabel7: TQRLabel;
QRLabel8: TQRLabel;
QRDBText5: TQRDBText;
QRLabel9: TQRLabel;
procedure DetailBand1BeforePrint(Sender: TQRCustomBand;
var PrintBand: Boolean);
procedure FormShow(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure SummaryBand1BeforePrint(Sender: TQRCustomBand;
var PrintBand: Boolean);
procedure qrp_Despesa04BeforePrint(Sender: TCustomQuickRep;
var PrintReport: Boolean);
private
{ Private declarations }
Soma : Currency;
vSubtotal : currency;
gZebrado: Boolean;
vCodigo : String;
public
{ Public declarations }
end;
var
frm_Despesa04: Tfrm_Despesa04;
implementation
uses U_DtmSecre;
{$R *.dfm}
procedure Tfrm_Despesa04.DetailBand1BeforePrint(Sender: TQRCustomBand;
var PrintBand: Boolean);
begin
if ( gZebrado ) then
Sender.Color:= $00EEEEEE
else
Sender.Color:= $00FFFFFF;
gZebrado:= not gZebrado;
end;
procedure Tfrm_Despesa04.FormShow(Sender: TObject);
begin
Dtm_Secre.qLanca_Despesa.Open;
end;
procedure Tfrm_Despesa04.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
Dtm_Secre.qLanca_Despesa.Close;
end;
procedure Tfrm_Despesa04.SummaryBand1BeforePrint(Sender: TQRCustomBand;
var PrintBand: Boolean);
begin
//soma := 0;
Dtm_Secre.qLanca_Despesa.Close;
Dtm_Secre.qLanca_Despesa.Sql.Clear;
Dtm_Secre.qLanca_Despesa.Sql.Add('Select distinct codigo, sum(valor) as soma from lanca_despesa group by codigo');
Dtm_Secre.qLanca_Despesa.ExecSql;
Dtm_Secre.qLanca_Despesa.Open;
//QrLabel9.Caption := FormatFloat('#,##0.00',soma);
(* Dtm_Secre.qLanca_Despesa.Open;
Dtm_Secre.qLanca_Despesa.First;
Soma := 0;
vSubtotal := 0;
vCodigo := Dtm_Secre.qLanca_DespesaCodigo.AsString;
while not Dtm_Secre.qLanca_Despesa.Eof do
begin
if Dtm_Secre.qLanca_DespesaCodigo.AsString = vCodigo then
begin
vSubtotal := vSubtotal + Dtm_Secre.qLanca_DespesaValor.Value;
Dtm_Secre.qLanca_Despesa.Next;
end
Else
begin
qrLabel7.Caption := 'Soma do código ' + Dtm_Secre.qLanca_DespesaCodigo.AsString + ' - ' + Dtm_Secre.qLanca_DespesaConta.AsString + ' ';
QrLabel8.Caption := FormatFloat('#,##0.00',vSubtotal);
soma := soma + vSubtotal;
vSubtotal := 0;
vCodigo := Dtm_Secre.qLanca_DespesaCodigo.AsString;
End;
end;
// qrLabel7.Caption := 'Total Geral das Despesas: ';
// QrLabel8.Caption := FormatFloat('#,##0.00',soma);
//
// soma := 0;
// Dtm_Secre.qLanca_Despesa.Open;
// While not Dtm_Secre.qLanca_Despesa.eof do
// begin
// soma := soma + Dtm_Secre.qLanca_DespesaValor.Value;
// Dtm_Secre.qLanca_Despesa.next;
// end;
/// QrLabel8.Caption := FormatFloat('#,##0.00',soma);
*)
end;
procedure Tfrm_Despesa04.qrp_Despesa04BeforePrint(Sender: TCustomQuickRep;
var PrintReport: Boolean);
begin
Dtm_Secre.qLanca_Despesa.Open;
end;
end.
Gilberto Moreira
Curtidas 0