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


Levisants

Levisants

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;


Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

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

Aceitar