extrato bancario quickreport / clientdataset

26/06/2008

1

Pessoal, estou com muita dificuldade em criar um relatorio de extrato bancario no quickreport. E o seguinte: tenho uma tabela onde esta todos os lancamentos bancarios (cheque emitidos, depositos, aplicacao, resgate, etc), o que preciso fazer é uma relatorio igual ao extrato do banco, suponhamos que seleciono o banco com codigo 1 e o periodo de 01/06/2008 a 30/06/2008, entao o extrato teria que ficar +/- assim:

EXTRATO BANCARIO PERIODO 01/06/2008 A 30/06/2008

BANCO: 1 - CEF

SALDO TRANSPORTADO 1.500,00

LACTO DATA TIPO CREDITO DEBITO SALDO
33 05/06/2008 D 50,00 1.450,00
34 06/06/2008 D 100,00 1.350,00
35 12/06/2008 D 150,00 1.200,00
36 20/06/2008 C 1.000,00 2.200,00

e assim por diante. Se o extrato der mais de 1 pagina, imagina que o ultimo lacto (36) foi o ultimo da primeira pagina, ao pular para a segunda repete o cabelho e atualiza o SALDO TRANSPORTADO para 2.200,00 e continua a imprimir os lancamento e para cada nova pagina vai atualizando o saldo transportado. Quando chegar no final do relatorio, na ultima pagina fazer o resumo geral +/- assim:

SALDO A TRANSPORTAR ------------------> 2.200,00

SALDO ATE 01/06/2008 ------------------> 1.500,00
TOTAL DOS CREDITOS -----------------> 1.200,00
TOTAL DOS DEBITOS --------------------> 300,00

SALDO ATUALIZADO ATE 30/06/2008 --> 2.200,00


A dificuldade esta justamente para pegar o saldo transportado da primeira pagina e tb no salto da pagina atualizar este saldo transportado, alguem poderia me ajudar com algum exemplo e mesmo alguma ideia de como fazer isso?

Aguardo com urgencia.


Responder

Posts

26/06/2008

Micheus

A dificuldade esta justamente para pegar o saldo transportado da primeira pagina e tb no salto da pagina atualizar este saldo transportado, alguem poderia me ajudar com algum exemplo e mesmo alguma ideia de como fazer isso?

[b:1e050573c2]IEustaquio[/b:1e050573c2], como vc está fazendo a totalização? Está utilizando uma variável e atualizando ela no código, a cada evento BeforePrint da banda detalhe, por ex.?
Que estrutura vc já tem no seu relatório (bandas e dados)?


Responder

26/06/2008

Micheus

A dificuldade esta justamente para pegar o saldo transportado da primeira pagina e tb no salto da pagina atualizar este saldo transportado, alguem poderia me ajudar com algum exemplo e mesmo alguma ideia de como fazer isso?

[b:a10ba918b1]IEustaquio[/b:a10ba918b1], como vc está fazendo a totalização? Está utilizando uma variável e atualizando ela no código, a cada evento BeforePrint da banda detalhe, por ex.?
Que estrutura vc já tem no seu relatório (bandas e dados)?


Responder

26/06/2008

Micheus

A dificuldade esta justamente para pegar o saldo transportado da primeira pagina e tb no salto da pagina atualizar este saldo transportado, alguem poderia me ajudar com algum exemplo e mesmo alguma ideia de como fazer isso?

[b:48ab84c9b8]IEustaquio[/b:48ab84c9b8], como vc está fazendo a totalização? Está utilizando uma variável e atualizando ela no código, a cada evento BeforePrint da banda detalhe, por ex.?
Que estrutura vc já tem no seu relatório (bandas e dados)?


Responder

26/06/2008

Micheus

ops.....
Moderador, favor remover esta bagunça. Estavar recebendo um erro ao enviar e acabei gerando esta baboseira. :oops:


Responder

26/06/2008

Ieustaquio

[quote:a2b2f72f6f=´IEustaquio´]A dificuldade esta justamente para pegar o saldo transportado da primeira pagina e tb no salto da pagina atualizar este saldo transportado, alguem poderia me ajudar com algum exemplo e mesmo alguma ideia de como fazer isso?

[b:a2b2f72f6f]IEustaquio[/b:a2b2f72f6f], como vc está fazendo a totalização? Está utilizando uma variável e atualizando ela no código, a cada evento BeforePrint da banda detalhe, por ex.?
Que estrutura vc já tem no seu relatório (bandas e dados)?[/quote:a2b2f72f6f]

nao estou utilizando o evento beforeprint da banda detalhe. Estou apanhando tanto desse relatorio que ate o momento tenho as bandas titleband = rgpageheader, rbdetail, rbsummary e rbsubdetail; onde, na banda titleband esta o cabecalho do relatorio e algumas informacoes como periodo, banco e titulos dos registro da banda detail e tb esta uma variavel do saldo a transportar que talvez nem esteja no lugar certo, na banda detail estao os campos da tabela, na banda summary esta o resumo do extrato.


ja estou perdendo noites de sonho com este relatorio e vai ter outro que me parece que vai dar mais trabalho ainda, mas esta vai ser outra etapa, primeiro tenho que fechar esse relatorio de extrato com uma certa urgencia....

Por favor me ajuda


Responder

26/06/2008

Micheus

[b:c56799fea9]IEustaquio[/b:c56799fea9], partindo do princípio de que vc já tem os dados filtrados, ou seja, as informações da conta e período a ser listado, não haveria porque usar banda tipo SubDetail.

Veja sugestão e se ela serve para seu caso. Em azul, destaquei os QRLabels que vc precisará usar, as demais informações, presumo que vc possa buscar do seu dataset e ligá-las a QRDBTexts:
[b:c56799fea9]rbTitle ou rbPageHeader[/b:c56799fea9]
+-----------------------------------------------------------------------+
| EXTRATO BANCARIO PERIODO 01/06/2008 A 30/06/2008
|
| BANCO: 1 - CEF
+-----------------------------------------------------------------------+
apenas por uma questão de ordem e facilidades em configurações, eu sugiro que use uma banda child para mostrar o saldo transportado. Então, na banda anterior, set a propriedade [i:c56799fea9]HasChild[/i:c56799fea9] = True (será automaticamente adicionada uma banda [i:c56799fea9]QRChildBand[/i:c56799fea9] vinculada a banda anterior.

[b:c56799fea9]QRChildBand[/b:c56799fea9]
+-----------------------------------------------------------------------+
| SALDO TRANSPORTADO [color=blue:c56799fea9][b:c56799fea9]lbSaldoTransportado[/b:c56799fea9][/color:c56799fea9]
|
| LACTO DATA TIPO CREDITO DEBITO SALDO
+-----------------------------------------------------------------------+

[b:c56799fea9]rbDetail[/b:c56799fea9]
+-----------------------------------------------------------------------+
| 32 05/06/2008 D 50,00 [color=blue:c56799fea9][b:c56799fea9]lbSaldo[/b:c56799fea9][/color:c56799fea9]
+-----------------------------------------------------------------------+
| 33 05/06/2008 D 50,00 1.450,00
+-----------------------------------------------------------------------+
| 34 06/06/2008 D 100,00 1.350,00
+-----------------------------------------------------------------------+
| 35 12/06/2008 D 150,00 1.200,00
+-----------------------------------------------------------------------+
| 36 20/06/2008 C 1.000,00 2.200,00
+-----------------------------------------------------------------------+

[b:c56799fea9]rbSummary[/b:c56799fea9]
+-----------------------------------------------------------------------+
| SALDO A TRANSPORTAR ------------------> [color=blue:c56799fea9][b:c56799fea9]lbSaldoTransportar[/b:c56799fea9][/color:c56799fea9]
|
| SALDO ATE 01/06/2008 ------------------> [color=blue:c56799fea9][b:c56799fea9]lbSaldoInicial[/b:c56799fea9][/color:c56799fea9]
| TOTAL DOS CREDITOS --------------------> [color=blue:c56799fea9][b:c56799fea9]lbTotalCreditos[/b:c56799fea9][/color:c56799fea9]
| TOTAL DOS DEBITOS ----------------------> [color=blue:c56799fea9][b:c56799fea9]lbTotalDebitos[/b:c56799fea9][/color:c56799fea9]
|
| SALDO ATUALIZADO ATE 30/06/2008 --> [color=blue:c56799fea9][b:c56799fea9]lbSaldoAtualizado[/b:c56799fea9][/color:c56799fea9]
+-----------------------------------------------------------------------+

1) antes da visualização/impressão do QuickRep (no evento [i:c56799fea9]BeforePrint[/i:c56799fea9] dele):
a- vc deverá inicializar as informações no rbTitle ou rbPageHeader;
b- inicializar as variáveis: Saldo (do tipo double), com o saldo inicial, Debitos e Creditos com 0;
c - inicializar o QRLabel [i:c56799fea9]lbSaldoInicial[/i:c56799fea9] com o valor do saldo inicial;
...
Saldo := <saldo_inicial_obtido...>;
lbSaldoInicial.Caption := FormatFloat(´#,0.00´, Saldo);
Debitos := 0;
Creditos := 0;

2) no evento BeforePrint da banda [i:c56799fea9]QRChildBand[/i:c56799fea9], vc inicializa o QRLabel lbSaldoTransportado com o valor da variável Saldo:
lbSaldoTransportado.Caption := FormatFloat(´,0.00´, Saldo);

3) no evento BeforePrint da banda [i:c56799fea9]rbDetail[/i:c56799fea9], vc deve calcular o novo saldo e inicializar o QRLabel [i:c56799fea9]lbSaldo[/i:c56799fea9] com este valor:
if <campo_tipo_operação> = ´D´ then
begin
  Debitos := Debitos +<campo_valor_lancamento>;
  Saldo := Saldo - <campo_valor_lancamento>;
end else
begin
  Creditos := Creditos +<campo_valor_lancamento>;
  Saldo := Saldo + <campo_valor_lancamento>;
end;
lbSaldo.Caption := FormatFloat(´#,0.00´, Saldo);

4) no evento BeforePrint da banda [i:c56799fea9]rbSummary[/i:c56799fea9], vc deve inicializar os QRLabels: lbSaldoTransportar, lbTotalCreditos, lbTotalDebitos e lbSaldoAtualizado
lbSaldoTransportar.Caption := FormatFloat(´,0.00´, Saldo);
lbTotalCreditos.Caption := FormatFloat(´,0.00´, Creditos);
lbTotalDebitos.Caption := FormatFloat(´,0.00´, Debitos);


Bom, se não me esqueci de nada, isto deve lhe dar uma noção de como construir seu relatório. Outras maneiras são possíveis (sempre há outro modo...), mas dentro das informações que tenho, é o que posso sugerir.

Abraços


Responder

27/06/2008

Ieustaquio

[b:870e5d0e2e]IEustaquio[/b:870e5d0e2e], partindo do princípio de que vc já tem os dados filtrados, ou seja, as informações da conta e período a ser listado, não haveria porque usar banda tipo SubDetail. Veja sugestão e se ela serve para seu caso. Em azul, destaquei os QRLabels que vc precisará usar, as demais informações, presumo que vc possa buscar do seu dataset e ligá-las a QRDBTexts: [b:870e5d0e2e]rbTitle ou rbPageHeader[/b:870e5d0e2e] +-----------------------------------------------------------------------+ | EXTRATO BANCARIO PERIODO 01/06/2008 A 30/06/2008 | | BANCO: 1 - CEF +-----------------------------------------------------------------------+ apenas por uma questão de ordem e facilidades em configurações, eu sugiro que use uma banda child para mostrar o saldo transportado. Então, na banda anterior, set a propriedade [i:870e5d0e2e]HasChild[/i:870e5d0e2e] = True (será automaticamente adicionada uma banda [i:870e5d0e2e]QRChildBand[/i:870e5d0e2e] vinculada a banda anterior. [b:870e5d0e2e]QRChildBand[/b:870e5d0e2e] +-----------------------------------------------------------------------+ | SALDO TRANSPORTADO [color=blue:870e5d0e2e][b:870e5d0e2e]lbSaldoTransportado[/b:870e5d0e2e][/color:870e5d0e2e] | | LACTO DATA TIPO CREDITO DEBITO SALDO +-----------------------------------------------------------------------+ [b:870e5d0e2e]rbDetail[/b:870e5d0e2e] +-----------------------------------------------------------------------+ | 32 05/06/2008 D 50,00 [color=blue:870e5d0e2e][b:870e5d0e2e]lbSaldo[/b:870e5d0e2e][/color:870e5d0e2e] +-----------------------------------------------------------------------+ | 33 05/06/2008 D 50,00 1.450,00 +-----------------------------------------------------------------------+ | 34 06/06/2008 D 100,00 1.350,00 +-----------------------------------------------------------------------+ | 35 12/06/2008 D 150,00 1.200,00 +-----------------------------------------------------------------------+ | 36 20/06/2008 C 1.000,00 2.200,00 +-----------------------------------------------------------------------+ [b:870e5d0e2e]rbSummary[/b:870e5d0e2e] +-----------------------------------------------------------------------+ | SALDO A TRANSPORTAR ------------------> [color=blue:870e5d0e2e][b:870e5d0e2e]lbSaldoTransportar[/b:870e5d0e2e][/color:870e5d0e2e] | | SALDO ATE 01/06/2008 ------------------> [color=blue:870e5d0e2e][b:870e5d0e2e]lbSaldoInicial[/b:870e5d0e2e][/color:870e5d0e2e] | TOTAL DOS CREDITOS --------------------> [color=blue:870e5d0e2e][b:870e5d0e2e]lbTotalCreditos[/b:870e5d0e2e][/color:870e5d0e2e] | TOTAL DOS DEBITOS ----------------------> [color=blue:870e5d0e2e][b:870e5d0e2e]lbTotalDebitos[/b:870e5d0e2e][/color:870e5d0e2e] | | SALDO ATUALIZADO ATE 30/06/2008 --> [color=blue:870e5d0e2e][b:870e5d0e2e]lbSaldoAtualizado[/b:870e5d0e2e][/color:870e5d0e2e] +-----------------------------------------------------------------------+ 1) antes da visualização/impressão do QuickRep (no evento [i:870e5d0e2e]BeforePrint[/i:870e5d0e2e] dele): a- vc deverá inicializar as informações no rbTitle ou rbPageHeader; b- inicializar as variáveis: Saldo (do tipo double), com o saldo inicial, Debitos e Creditos com 0; c - inicializar o QRLabel [i:870e5d0e2e]lbSaldoInicial[/i:870e5d0e2e] com o valor do saldo inicial;
...
Saldo := <saldo_inicial_obtido...>;
lbSaldoInicial.Caption := FormatFloat(´#,0.00´, Saldo);
Debitos := 0;
Creditos := 0;
2) no evento BeforePrint da banda [i:870e5d0e2e]QRChildBand[/i:870e5d0e2e], vc inicializa o QRLabel lbSaldoTransportado com o valor da variável Saldo:
lbSaldoTransportado.Caption := FormatFloat(´,0.00´, Saldo);
3) no evento BeforePrint da banda [i:870e5d0e2e]rbDetail[/i:870e5d0e2e], vc deve calcular o novo saldo e inicializar o QRLabel [i:870e5d0e2e]lbSaldo[/i:870e5d0e2e] com este valor:
if <campo_tipo_operação> = ´D´ then
begin
  Debitos := Debitos +<campo_valor_lancamento>;
  Saldo := Saldo - <campo_valor_lancamento>;
end else
begin
  Creditos := Creditos +<campo_valor_lancamento>;
  Saldo := Saldo + <campo_valor_lancamento>;
end;
lbSaldo.Caption := FormatFloat(´#,0.00´, Saldo);
4) no evento BeforePrint da banda [i:870e5d0e2e]rbSummary[/i:870e5d0e2e], vc deve inicializar os QRLabels: lbSaldoTransportar, lbTotalCreditos, lbTotalDebitos e lbSaldoAtualizado
lbSaldoTransportar.Caption := FormatFloat(´,0.00´, Saldo);
lbTotalCreditos.Caption := FormatFloat(´,0.00´, Creditos);
lbTotalDebitos.Caption := FormatFloat(´,0.00´, Debitos);
Bom, se não me esqueci de nada, isto deve lhe dar uma noção de como construir seu relatório. Outras maneiras são possíveis (sempre há outro modo...), mas dentro das informações que tenho, é o que posso sugerir. Abraços



Quase deu certo, primeiro o qrlabel lbsaldotransportado esta pegando o saldo inicial - e primeiro registro no exemplo que citei estaria fazendo 1.500,00-50,00 e colocando no saldo transportado 1.450,00 ao invez de 1.500,00 e quando pula de pagina faz a mesma coisa.

segunda coisa que nao deu certo é que na banda rbdetail nao aparece o qrlabel lbsaldo.

ficou bem perto de dar certo.


Responder

27/06/2008

Ieustaquio

Quase deu certo, o problema agora é que o saldo transportado esta aparecendo o saldo - ou + o primeiro lancamento dependendo do tipo do lancamento

Exemplo de como esta ocorrendo:

[b:38086d8b30]QRChildBand[/b:38086d8b30]
+-----------------------------------------------------------------------+
| SALDO TRANSPORTADO [b:38086d8b30][color=red:38086d8b30]1.450,00[/color:38086d8b30][/b:38086d8b30]
|
| LACTO DATA TIPO CREDITO DEBITO SALDO
+-----------------------------------------------------------------------+

[b:38086d8b30]rbDetail[/b:38086d8b30]
+-----------------------------------------------------------------------+
| 33 05/06/2008 D 50,00 [color=red:38086d8b30][b:38086d8b30]1.450,00[/b:38086d8b30][/color:38086d8b30]
+-----------------------------------------------------------------------+
| 34 06/06/2008 D 100,00 1.350,00
+-----------------------------------------------------------------------+
| 35 12/06/2008 D 150,00 1.200,00
+-----------------------------------------------------------------------+
| 36 20/06/2008 C 1.000,00 2.200,00
+-----------------------------------------------------------------------+

mas o correto seria da seguinte forma:

+-----------------------------------------------------------------------+
| SALDO TRANSPORTADO [b:38086d8b30][color=darkblue:38086d8b30]1.500,00[/color:38086d8b30][/b:38086d8b30]
|
| LACTO DATA TIPO CREDITO DEBITO SALDO
+-----------------------------------------------------------------------+

[b:38086d8b30]rbDetail[/b:38086d8b30]
+-----------------------------------------------------------------------+
| 33 05/06/2008 D 50,00 [color=darkblue:38086d8b30][b:38086d8b30]1.450,00[/b:38086d8b30][/color:38086d8b30]
+-----------------------------------------------------------------------+
| 34 06/06/2008 D 100,00 1.350,00
+-----------------------------------------------------------------------+
| 35 12/06/2008 D 150,00 1.200,00
+-----------------------------------------------------------------------+
| 36 20/06/2008 C 1.000,00 2.200,00
+-----------------------------------------------------------------------+



onde pode esta o erro, fiz tudo como vc havia me passado


Responder

02/07/2008

Micheus

[b:ad56c4ae6b]IEustaquio[/b:ad56c4ae6b], desculpe a demora em respondê-lo, esqueci de marcar a notificação para resposta e acabei não acessando o forum.

Pelo que vc relatou, parece que o evento [i:ad56c4ae6b]BeforePrint[/i:ad56c4ae6b] do [i:ad56c4ae6b]QrChilBand[/i:ad56c4ae6b] está ocorrendo após o primeiro BeforePrint da banda [i:ad56c4ae6b]rbDetail[/i:ad56c4ae6b] - o que é estranho.

A título de teste, faça o seguinte, aumente a altura da sua banda [i:ad56c4ae6b]rbTitle[/i:ad56c4ae6b] ou [i:ad56c4ae6b]rbPageHeader[/i:ad56c4ae6b], e coloque o [i:ad56c4ae6b]lbSaldoTransportado[/i:ad56c4ae6b], bem como, mova a inicialização dele para o evento BeforePrint desta banda (comente ou remova ela da banda QRChildBand) e veja como fica.

A idéia é que antes que uma banda detalhe seja impressa, o valor da variável saldo naquele momento seja movido para este QRLabel.

Abraços


Responder