Fórum Somar Vários Details no QuickReport #175637

18/08/2003

0

Tenho um problema que pedi solução aqui e não tive êxito:
Numa aplicação/Tabela eu cadastro o Pai, Filho1 e Filho2.
Preciso montar um relatório onde mostre:
Pai
Filho1
Filho2

E pela sequência, o próximo cadastro:
Pai
Filho1
Filho2

Esses campos tenho colocado numa Band Detail (Pai, Filho1, Filho2) e vai me dando o relatório exatamente do jeito que necessito... O problema é na soma! Uso o DetailCout do componente SysData para somar e ele me retorna apenas o 1º valor da Band. Ou seja, onde tem 3 ele mostra apenas 1.
Exemplo:

Geraldo
Junior
Mariana

José
Alisson
Everton

... E assim por diante está perfeito; Só que no resultado:
Ao invé de 6, tenho 2.

Com fazer essa soma? :shock:

DELPHI 5
PARADOX


Osmar Cardoso

Osmar Cardoso

Responder

Posts

18/08/2003

Abueno_silva

Pelo que entendi, pai, filho1 e filho2 são campos do mesmo registro, certo? Então, o DetailCount não vai funcionar, pois ele conta apenas os registros. Uma forma de contornar isso é utilizando uma variável e fazer a soma ´na mão´. Declare a variável no início do código do Report, e no BeforePrint da DetailBand verifique se os campos estão preenchidos, somando-os na variável. No final, coloque uma QRLabel e substitua o Caption pelo total da sua variável.
Espero ter sido útil.
[]´s


Responder

Gostei + 0

19/08/2003

Osmar Cardoso

Abueno, acho que é bem isso que vc falou mas tentei muito e não consegui desenvolver essa função.
Realmente preciso contar quantos registros tenho preenchidos na Tabela!
Vê se consegue me dar mais detalhes sobre o preenchimento dessa variável?!? Por favor... :?


Responder

Gostei + 0

19/08/2003

Abueno_silva

Vamos lá.

Na Unit do QReport, procure a seção var(logo antes da implementation) e declare a variável:

v_tot_reg : integer;

No evento BeforePrint do Report:

v_tot_reg := 0;

No evento BeforePrint da DetailBand (onde são impressos os registros):

if QRDBText1.Caption <> ´´ then
inc(v_tot_reg);
if QRDBText2.Caption <> ´´ then
inc(v_tot_reg);
if QRDBText3.Caption <> ´´ then
inc(v_tot_reg);

Acrescente uma SummaryBand no Report, coloque uma label e e coloque no evento BeforePrint da Band:

QRLabel1.Caption := inttostr(v_tot_reg);


Isto deve funcionar, agora é só você formatar o relatório como quiser.
Se ainda tiver alguma dúvida ou problema, é só perguntar.

[]´s


Responder

Gostei + 0

19/08/2003

Osmar Cardoso

Alexandre, oi eu traveis...

Do jeito que vc me passou ele continuou somando os registros em branco...
Aí fiz direto na tabela:
Table1.Pai.Value...

Deu certo só na primeira vez que se abre o QuickReport! Se abro novamente sem fechar o programa, ele remonta a soma...

Agora a dúvida é como fechar o valor na variável após fechar o QuickReport!

Agradeço muito sua atenção!


Responder

Gostei + 0

19/08/2003

Abueno_silva

É estranho, já que quando você abre o QR ele deveria zerar...
Você pode tentar zerar a variável no final da impressão (evento AfterPrint do QR), ou então declará-la na seção public do report, daí antes de dar o preview ou o print, você inicia a variável no form.

[]´s


Responder

Gostei + 0

19/08/2003

Osmar Cardoso

Alexandre, por favor, me desculpe amigo...

Eu não havia declarado no evento BeforePrint do Report como vc me orientou (v_tot_reg := 0)!

Com o código completo que me orientou com aquelas modificações que te passei e funcionou perfeitamente.

Vc é muito prestativo. Meus agradecimentos sinceros.
Abraços e até a próxima dúvida.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar