Array
(
)

Não consigo fazer um relatório Mestre e detalhes

Levisants
   - 03 dez 2005

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


Edilcimar
   - 04 dez 2005

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;