Não consigo fazer um relatório Mestre e detalhes
03/12/2005
0
Olá galera eu preciso fazer um relatorio de cliente que exibe os produtos para cada cliente, mas não estou conseguindo fazer, será que alguem pode me ajudar?
Eu tenho 3 tabelas
1 - TBLCLIENTES
CLI_CODIGO
CLI_NOME
2 - TBLPRODUTOS_CLIENTE
PRD_CDCLIENTE
PRD_CDPRODUTO
3 - TBLPRODUTOS
PRD_CODIGO
PRD_DESCRICAO
Eu preciso exibir os clientes e para cada cliente irá ter varios produtos e outros clientes não irá ter produtos, eu tentei fazer usando parametros mas não funcionou.
Alguem pode me ajudar com esse problema, eu estou usando o firebird, se alguem puder me enviar um exemplo eu agradeço..
Obrigado
Eu tenho 3 tabelas
1 - TBLCLIENTES
CLI_CODIGO
CLI_NOME
2 - TBLPRODUTOS_CLIENTE
PRD_CDCLIENTE
PRD_CDPRODUTO
3 - TBLPRODUTOS
PRD_CODIGO
PRD_DESCRICAO
Eu preciso exibir os clientes e para cada cliente irá ter varios produtos e outros clientes não irá ter produtos, eu tentei fazer usando parametros mas não funcionou.
Alguem pode me ajudar com esse problema, eu estou usando o firebird, se alguem puder me enviar um exemplo eu agradeço..
Obrigado
Levisants
Curtir tópico
+ 0
Responder
Posts
04/12/2005
Edilcimar
Use uma ibtable, ibquery, ou qualquer outra coisa e faça o seguinte relacionamento:
a)tabela1->clientes, ordenada pelo campo nome (para sair em ordem alfabética)
b)tabela2->produtos para o cliente, conecte esta tabela à tabela1 através dos campos codigodocliente (este campo tem que existir nas duas tabelas)
c)tabela3->produtos, conecte-a à tabela2 através dos campos codigoproduto(também tem que existir na tabela2 e tabela3).
A partir daí, quando vc selecionar um cliente, na tabela2 vão aparecer os produtos para este cliente, e à medida que vc percorre a tabela2 vão aparecer na tabela3 o nome dos produtos constantes na tabela2.
var arquivo : textfile
inicie o procedimento de impressão
with ibtable ou ibquery do
begin
first;
while not eof do ->para correr todos os clientes
begin
nome := fieldbyname(´nomecliente´).asstring;
with table2 do
begin
while not eof do ->para correr a tabela2
begin
with table3 do
begin
produto := fieldbyname(´nomeproduto´).asstring; ->pegar o nome do produto na tabela3
writeln(arquivo, nomecliente + ´ ´ + produto);
next;
end;
next;
end;
next;
end;
a)tabela1->clientes, ordenada pelo campo nome (para sair em ordem alfabética)
b)tabela2->produtos para o cliente, conecte esta tabela à tabela1 através dos campos codigodocliente (este campo tem que existir nas duas tabelas)
c)tabela3->produtos, conecte-a à tabela2 através dos campos codigoproduto(também tem que existir na tabela2 e tabela3).
A partir daí, quando vc selecionar um cliente, na tabela2 vão aparecer os produtos para este cliente, e à medida que vc percorre a tabela2 vão aparecer na tabela3 o nome dos produtos constantes na tabela2.
var arquivo : textfile
inicie o procedimento de impressão
with ibtable ou ibquery do
begin
first;
while not eof do ->para correr todos os clientes
begin
nome := fieldbyname(´nomecliente´).asstring;
with table2 do
begin
while not eof do ->para correr a tabela2
begin
with table3 do
begin
produto := fieldbyname(´nomeproduto´).asstring; ->pegar o nome do produto na tabela3
writeln(arquivo, nomecliente + ´ ´ + produto);
next;
end;
next;
end;
next;
end;
Responder
Clique aqui para fazer login e interagir na Comunidade :)