Relacionamento entre tabelas

30/01/2004

0

sou iniciante em delphi e Estou tentando fazer um pequeno banco de dados emvolvendo duas tabelas: Uma Com Dois Campos: Nº do Relatorio e Data do dia, e outra com: Nome do Cliente, Vr. do Plano. Financiamento......... gostaria que ficasse no form: Nº do Relatoria e Data(1ª Tabela) e Um Dbgrid(2ª Tabela) com o nome de varios clientes. e quando eu incluir o primeiro relatorio zerar o Dbgrid e partir para o segundo relatorio.(uso Tabelas do Ms Access XP)
Me ajudem por favor ja tentei varias maneiras e não consegui :oops:


Xadriano

Xadriano

Responder

Post mais votado

31/01/2004

Olá xadriano, minha sugestão será de acordo com o q eu entendi ok?
Acredito q vc precisa gravar relatórios, onde [i:f49f114763]cada relatório possui vários clientes[/i:f49f114763] (um para muitos). Teríamos 3 tabelas, a saber:

Clientes
- codcliente (chave primária)
- nome
- etc...

Relatorios
- codrelat
- data

ClientesRelat
- codclienterelat (chave primária)
- codrelat (relaciona-se com Relatorios.codrelat)
- codcliente (relaciona-se com Clientes.codcliente)
- vr. do plano
- financiamento
- etc...

Agora, faça o seguinte:
- crie um Table para cada tabela;
- crie um DataSource para cada table;
- abra o FieldsEditor da tabela ClientesRelat, clique com o botão direito e selecione New Field;
- onde tiver ´Name:´, digite Clientes; onde tiver ´Type:´, selecione string; onde tiver ´Size:´, digite, sei lá, uns 30;
- Na caixa ´Field Type´, selecione LookUp;
- KeyFields: codcliente;
- Dataset: Clientes;
- Lookup Keys: codcliente;
- Result Field: nome.

Acompanhou tudo? Então vamos lá...

- na tela de cadastro, adicione dois DBEdits, dois DBNavigators e um DBGrid;
- associe os dois DBEdits e o primeiro DBNavigator ao DataSource da tabela de Relatorios, e o DBGrid e o outro DBNavigator, associe ao DataSource da tabela ClientesRelat;
- associe cada DBEdit a seu respectivo campo. No DBGrid, dê dois cliques e adicione todos os campos;
- na propriedade MasterSource da tabela ClientesRelat, aponte para o DataSource da tabela de Clientes;
- na propriedade MasterField, aponte para o campo codrelat;
- acho q só. Rode a aplicação.

Comportamento [b:f49f114763]esperado[/b:f49f114763]:

- os dados dos relatórios vc insere nos dois DBEdits, e os dados dos clientes dos relatórios, no DBGrid. Para isso, use os seus respectivos DBNavigators. Ao inserir um novo cliente, aparecerá, entre outros, um campo LookUp com os clientes disponíveis; qdo gravar, o código do cliente ficará gravado na tabela. Ao gravar um novo relatório, o DBGrid ficará em branco, e ao navegar pelos relatórios, o DBGrid atualiza automaticamente.

Ufa! Espero ter sido útil.


Tnaires

Tnaires
Responder

Mais Posts

31/01/2004

Tnaires

- na propriedade MasterSource da tabela ClientesRelat, aponte para o DataSource da tabela de Clientes;

Correção:
- na propriedade MasterSource da tabela ClientesRelat, aponte para o DataSource da tabela de Relatorios;



Responder

08/02/2020

Daniel Dias

Olá xadriano, minha sugestão será de acordo com o q eu entendi ok?
Acredito q vc precisa gravar relatórios, onde [i:f49f114763]cada relatório possui vários clientes[/i:f49f114763] (um para muitos). Teríamos 3 tabelas, a saber:

Clientes
- codcliente (chave primária)
- nome
- etc...

Relatorios
- codrelat
- data

ClientesRelat
- codclienterelat (chave primária)
- codrelat (relaciona-se com Relatorios.codrelat)
- codcliente (relaciona-se com Clientes.codcliente)
- vr. do plano
- financiamento
- etc...

Agora, faça o seguinte:
- crie um Table para cada tabela;
- crie um DataSource para cada table;
- abra o FieldsEditor da tabela ClientesRelat, clique com o botão direito e selecione New Field;
- onde tiver ´Name:´, digite Clientes; onde tiver ´Type:´, selecione string; onde tiver ´Size:´, digite, sei lá, uns 30;
- Na caixa ´Field Type´, selecione LookUp;
- KeyFields: codcliente;
- Dataset: Clientes;
- Lookup Keys: codcliente;
- Result Field: nome.

Acompanhou tudo? Então vamos lá...

- na tela de cadastro, adicione dois DBEdits, dois DBNavigators e um DBGrid;
- associe os dois DBEdits e o primeiro DBNavigator ao DataSource da tabela de Relatorios, e o DBGrid e o outro DBNavigator, associe ao DataSource da tabela ClientesRelat;
- associe cada DBEdit a seu respectivo campo. No DBGrid, dê dois cliques e adicione todos os campos;
- na propriedade MasterSource da tabela ClientesRelat, aponte para o DataSource da tabela de Clientes;
- na propriedade MasterField, aponte para o campo codrelat;
- acho q só. Rode a aplicação.

Comportamento [b:f49f114763]esperado[/b:f49f114763]:

- os dados dos relatórios vc insere nos dois DBEdits, e os dados dos clientes dos relatórios, no DBGrid. Para isso, use os seus respectivos DBNavigators. Ao inserir um novo cliente, aparecerá, entre outros, um campo LookUp com os clientes disponíveis; qdo gravar, o código do cliente ficará gravado na tabela. Ao gravar um novo relatório, o DBGrid ficará em branco, e ao navegar pelos relatórios, o DBGrid atualiza automaticamente.

Ufa! Espero ter sido útil.


Responder

08/02/2020

Daniel Dias

Olá xadriano, minha sugestão será de acordo com o q eu entendi ok?
Acredito q vc precisa gravar relatórios, onde [i:f49f114763]cada relatório possui vários clientes[/i:f49f114763] (um para muitos). Teríamos 3 tabelas, a saber:

Clientes
- codcliente (chave primária)
- nome
- etc...

Relatorios
- codrelat
- data

ClientesRelat
- codclienterelat (chave primária)
- codrelat (relaciona-se com Relatorios.codrelat)
- codcliente (relaciona-se com Clientes.codcliente)
- vr. do plano
- financiamento
- etc...

Agora, faça o seguinte:
- crie um Table para cada tabela;
- crie um DataSource para cada table;
- abra o FieldsEditor da tabela ClientesRelat, clique com o botão direito e selecione New Field;
- onde tiver ´Name:´, digite Clientes; onde tiver ´Type:´, selecione string; onde tiver ´Size:´, digite, sei lá, uns 30;
- Na caixa ´Field Type´, selecione LookUp;
- KeyFields: codcliente;
- Dataset: Clientes;
- Lookup Keys: codcliente;
- Result Field: nome.

Acompanhou tudo? Então vamos lá...

- na tela de cadastro, adicione dois DBEdits, dois DBNavigators e um DBGrid;
- associe os dois DBEdits e o primeiro DBNavigator ao DataSource da tabela de Relatorios, e o DBGrid e o outro DBNavigator, associe ao DataSource da tabela ClientesRelat;
- associe cada DBEdit a seu respectivo campo. No DBGrid, dê dois cliques e adicione todos os campos;
- na propriedade MasterSource da tabela ClientesRelat, aponte para o DataSource da tabela de Clientes;
- na propriedade MasterField, aponte para o campo codrelat;
- acho q só. Rode a aplicação.

Comportamento [b:f49f114763]esperado[/b:f49f114763]:

- os dados dos relatórios vc insere nos dois DBEdits, e os dados dos clientes dos relatórios, no DBGrid. Para isso, use os seus respectivos DBNavigators. Ao inserir um novo cliente, aparecerá, entre outros, um campo LookUp com os clientes disponíveis; qdo gravar, o código do cliente ficará gravado na tabela. Ao gravar um novo relatório, o DBGrid ficará em branco, e ao navegar pelos relatórios, o DBGrid atualiza automaticamente.

Ufa! Espero ter sido útil.





PERFEITO, MUITO BOM TÓPICO
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