Fórum Montar uma Query de Relatório #386975

23/09/2010

0

Olá, gente.Estou com o seguinte problema:Em um aplicativo de controle acadêmico tenho quatro tabelas: ALUNOS, TURMAS, TIPOS_PAGAMENTOS, RL_AL_TR (matrículas de alunos nas turmas).Em um relatório preciso executar uma Query que agrupe os alunos por turma, dê o total de alunos em cada turma, dê o total de alunos bolsistas (TIPOS_PAGAMENTOS.DESCONTO=100), dê o total de alunos pagamentes (TIPOS_PAGAMENTOS.DESCONTO<100).Na página do relatório tenho uma PageHeader com o nome da turma, um rbDetail com o nome do aluno, matrícula, valor pago e valor restante, uma rbGroupFooter que deve conter o total de alunos da turma, o total de alunos pagantes, o total de alunos bolsistas, etc.Só que não estou encontrando uma maneira de, no rbGroupFooter fazer estas totalizações.Alguém pode me dar uma luz, me indicar como fazer?Abaixo as tabelas e suas ligações.OBS: Banco PARADOX (por favor, não me peçam pra mudar, pois na empresa onde trabalho já cogitei isso mas não me permitiram trocar de banco).Valeu.
Walder

Walder

Responder

Posts

23/09/2010

Deivison Melo

Walder,   Qual o gerador de relatório que está utilizando ultimamente?   Recomendo a utilização do fortes reports, com ele conseguirá fazer de forma mais fácil o que está desejando...   Atenciosamente,   Emanoel Deivison Recife - PE
Responder

Gostei + 0

23/09/2010

Walder

Olá, Emanuel.
É o seguinte: já peguei o sistema pronto. Foi desenvolvido há alguns anos e bastante gente já mexeu nele. Eu sou a bola da vez. É um aplicativo de gerenciamento acadêmico da empresa onde trabalho. O gerador de relatórios é o QuickReport e, como o aplicativo tem muitos relatórios prontos e foi (e ainda está sendo) desenvolvido em Delphi5, fica inviável substituí-lo. Já iniciei uma migração para o Delphi7 com banco Firebird, etc. Mas, devido a demanda de solicitações de clientes e dificuldade em substituir os componentes utilizados, tive que parar e voltar ao Delphi5.
Se puder me dar uma mãozinha agradeço bastante.
Valeu.
Responder

Gostei + 0

23/09/2010

Walder


Olá, Emanuel.

É o seguinte: já peguei o sistema pronto. Foi desenvolvido há alguns anos e bastante gente já mexeu nele. Eu sou a bola da vez. É um aplicativo de gerenciamento acadêmico da empresa onde trabalho. O gerador de relatórios é o QuickReport e, como o aplicativo tem muitos relatórios prontos e foi (e ainda está sendo) desenvolvido em Delphi5, fica inviável substituí-lo. Já iniciei uma migração para o Delphi7 com banco Firebird, etc. Mas, devido a demanda de solicitações de clientes e dificuldade em substituir os componentes utilizados, tive que parar e voltar ao Delphi5.

Se puder me dar uma mãozinha agradeço bastante.

Valeu.
 

Desculpa.Corrigindo: Emanoel.Valeu.
Responder

Gostei + 0

23/09/2010

Eriley Barbosa

se quer agrupar os alunos por turma tem que ter uma banda qrgroup e no seu expression agrupa por turma, ai na groupfooter coloca um qrexpression com a instrução COUNT dentro e a propriedade resetafterprint para true, isto te dara o total de alunos por turma, no order by da query tem que ter o código da turma senão o agrupamento não funcionara corretamente.   Na seção private do relatório declare duas variaveis: private
    { Private declarations }
     TotBolsistas, Totpagantes: Integer;   No before print da banda detail testa: if suaquery.FieldByName('DESCONTO').Value =100 then   inc(TotBolsistas) else    inc(Totpagantes);   Ai na groupfooter você coloca 2 qrLabel e no evento onprint do qrlabel totaldebolsistas, digita o seguinte código: Value := 'Total de bolsistas: ' + IntToStr(TotBolsistas);   No qrlabel total de pagantes digita: Value := 'Total de pagantes: ' + IntToStr(Totpagantes);   No evento afterprint do groupfooter digite: TotBolsistas := 0; otpagantes := 0;
Responder

Gostei + 0

23/09/2010

Walder

Olá, Eriley.
Vou testar.
Obrigado pela ajuda.
Responder

Gostei + 0

24/09/2010

Walder


se quer agrupar os alunos por turma tem que ter uma banda qrgroup e no seu expression agrupa por turma, ai na groupfooter coloca um qrexpression com a instrução COUNT dentro e a propriedade resetafterprint para true, isto te dara o total de alunos por turma,
no order by da query tem que ter o código da turma senão o agrupamento não funcionara corretamente.
 
Na seção private do relatório declare duas variaveis:
private
    { Private declarations }
     TotBolsistas, Totpagantes: Integer;
 
No before print da banda detail testa:
if suaquery.FieldByName('DESCONTO').Value =100 then
  inc(TotBolsistas)
else
   inc(Totpagantes);
 
Ai na groupfooter você coloca 2 qrLabel e no evento onprint do qrlabel totaldebolsistas, digita o seguinte código:
Value := 'Total de bolsistas: ' + IntToStr(TotBolsistas);
 
No qrlabel total de pagantes digita:

Value := 'Total de pagantes: ' + IntToStr(Totpagantes);
 
No evento afterprint do groupfooter digite:
TotBolsistas := 0;
otpagantes := 0;
 

Olá, Eriley.Deu certo, amigo.Valeu pela ajuda.
Responder

Gostei + 0

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

Aceitar