Relacionamento entre tabelas
30/01/2004
0
Me ajudem por favor ja tentei varias maneiras e não consegui :oops:
Xadriano
Post mais votado
31/01/2004
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
Mais Posts
31/01/2004
Tnaires
Correção:
08/02/2020
Daniel Dias
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.
08/02/2020
Daniel Dias
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
Clique aqui para fazer login e interagir na Comunidade :)