Montar uma Query de Relatório
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
Curtidas 0
Respostas
Deivison Melo
23/09/2010
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
GOSTEI 0
Walder
23/09/2010
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.
É 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.
GOSTEI 0
Walder
23/09/2010
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.
É 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.
GOSTEI 0
Eriley Barbosa
23/09/2010
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;
{ 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;
GOSTEI 0
Walder
23/09/2010
Olá, Eriley.
Vou testar.
Obrigado pela ajuda.
Vou testar.
Obrigado pela ajuda.
GOSTEI 0
Walder
23/09/2010
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;
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.
GOSTEI 0