Imprimindo a partir de várias tabelas com Q Report.

Delphi

28/06/2003

Tenho três tabelas Tab1,Tab2 e Tab3, Todas relacionadas. Tab1 refere-se ao arq. de candidatos(dados pessoais), Tab2 empresas onde trabalhou, Tab3 cursos que fez. Como desenvolver um relatório com mais de uma guia de detalhes mostrando as informações pessoais do candidato(tab1), logo após listar as empresas que trabalhou(tab2), depois os cursos que fez(tab3) e finalizar com mais algumas informações da Tab1.
Por favor me ajudem tenho urgencia em desenvolver este relatório.

Nisso Lima


Nisso

Nisso

Curtidas 0

Respostas

Rm

Rm

28/06/2003

Boa tarde

Alguns meses atras tive quase o mesmo problema: Uma empresa (Tabela Pai) seus recursos humanos (tabela filho) e maquinas (tabela filho).

O única maneira que encontrei for criar uma tabela auxilar em que todos os campos que necessitava ( provindos das duas tabelas filho) eram preenchidos . Assim o detail do Qrep se relaciona a uma tabela somente.
Toda vez que clico para imprimir os dados (setados pela tabela pai e provindos das duas tabelas filho) são copiados para esta tabela auxiliar( no exemplo table10). Desenvolvendo isto tu perceberas que é necessário saber qual das tabelas tem mais registros (para insert na table temp 10 as que tem menos os registros são inseridos com edit). Após este prcocedimento e impressão , criei um evento que apaga todos os registros temporários.procedure TForm3.BitBtn4Click(Sender: TObject);

procedure TForm3.BitBtn4Click(Sender: TObject);
var
recs1,recs2:integer; // para contar os registros das 2 table filho
begin
with datamodule5 do begin
recs1:=Table8.RecordCount;// conta os registros
recs2:=table9.RecordCount;// contas os registros

if recs1>=recs2 then begin// verifica se tabela 8 tem mais que a 9
table8.First;// se sim prossegue
table10.first;//tabela para registros temporários
while not table10.eof do begin
table10.delete;//primeiro apaga qualquer registro temporário anterior/
end;
while not table8.eof do begin
table10.insert;// insere os registros da tabela 8 na tabela temp
table10RH.VALUE:=table8rh.value;
table10Qtd.value:=table8qtd.value;
table8.next;
end;
TABLE10.FIRST;
table9.first;
while not table9.eof do begin
table10.Edit;// insere os registros da tabela 9 na table 10 temp
table10MQ.VALUE:=table9mq.value;
table10QtdMQ.value:=table9qtdmq.value;
TABLE10.next;
table9.next;
end;
end; //até aqui se recs1>=recs2

if recs1<recs2 then begin// o mesmo mas com table 9 com mais registros
table9.First;
table10.first;
while not table10.eof do begin
table10.delete;
end;
while not table9.eof do begin
table10.insert;
table10mq.VALUE:=table9mq.value;
table10Qtdmq.value:=table9qtdmq.value;
table9.next;
end;
TABLE10.FIRST;
table8.first;
while not table8.eof do begin
table10.Edit;
table10rh.VALUE:=table8rh.value;
table10Qtd.value:=table8qtd.value;
TABLE10.next;
table8.next;
end;
end;

form8.quickrep1.preview;// finalmente o preview com detail setado para tabela 10 ou temporária
end;
end;

Espero ter ajudado
Abraços RM


GOSTEI 0
Luciano França

Luciano França

28/06/2003

Jovem eu lhe aconselho usar o Fortes Report ele é bem parecido com
o quickReport só que tem muito mais recursos, inclusive tu pode colocar
3 bandas subDetail e dentro dela colocar bandas Header, Footer etc..
assim tudo conseguirar criar esse relatorio sem dificuldades.

um forte abraco.
Luciano França.


GOSTEI 0
Luciano França

Luciano França

28/06/2003

Use o componente Fortes Report, com ele tu pode colocar
3 bandas subDetail e nelas outras bandas como Footer e Header dentre outras e criar o relatorio que tu quer se problemas..

um forte abraco.
Luciano Franca


GOSTEI 0
Luciano França

Luciano França

28/06/2003

Use o componente Fortes Report, com ele tu pode colocar
3 bandas subDetail e nelas outras bandas como Footer e Header dentre outras e criar o relatorio que tu quer se problemas..

um forte abraco.
Luciano Franca


GOSTEI 0
POSTAR