PK composta e FK em FireBird com Delphi
Pessoal estou testando a utilização de chaves compostas em relacionamentos entre tabelas.
Como uso o FireBird criei 3 tabelas:
CLIENTES DEPENDENTES MOVIMENTACOES
nome
idade nome
idade data
ps.: os campos entre {} são as PK´s.
1 CLIENTE tem N DEPENTENDES, 1 DEPENTENTE tem N MOVIMENTACOES.
No banco de dados consegui fazer os FK´s entre as tabelas tudo ok.
A minha pergunta é como posso fazer na aplicação para alimentar a tabela MOVIMENTACOES nos campos e de uma só vez como é feito utilizando um ´DBLookupComboBox´ para alimentar um campo só???
Aguardo retorno... muito obrigado.
Como uso o FireBird criei 3 tabelas:
CLIENTES DEPENDENTES MOVIMENTACOES
nome
idade nome
idade data
ps.: os campos entre {} são as PK´s.
1 CLIENTE tem N DEPENTENDES, 1 DEPENTENTE tem N MOVIMENTACOES.
No banco de dados consegui fazer os FK´s entre as tabelas tudo ok.
A minha pergunta é como posso fazer na aplicação para alimentar a tabela MOVIMENTACOES nos campos e de uma só vez como é feito utilizando um ´DBLookupComboBox´ para alimentar um campo só???
Aguardo retorno... muito obrigado.
Judafox
Curtidas 0
Respostas
Judafox
09/07/2004
Agora fico Melhor.... :lol:
Pessoal estou testando a utilização de chaves compostas em relacionamentos entre tabelas.
Como uso o FireBird criei 3 tabelas:
CLIENTES
nome
idade
DEPENDENTES
nome
idade
MOVIMENTACOES
data
ps.: os campos entre {} são as PK´s.
1 CLIENTE tem N DEPENTENDES, 1 DEPENTENTE tem N MOVIMENTACOES.
No banco de dados consegui fazer os FK´s entre as tabelas tudo ok.
A minha pergunta é como posso fazer na aplicação para alimentar a tabela MOVIMENTACOES nos campos e de uma só vez como é feito utilizando um ´DBLookupComboBox´ para alimentar um campo só por exemplo???
Aguardo retorno... muito obrigado.
_________________
Pessoal estou testando a utilização de chaves compostas em relacionamentos entre tabelas.
Como uso o FireBird criei 3 tabelas:
CLIENTES
nome
idade
DEPENDENTES
nome
idade
MOVIMENTACOES
data
ps.: os campos entre {} são as PK´s.
1 CLIENTE tem N DEPENTENDES, 1 DEPENTENTE tem N MOVIMENTACOES.
No banco de dados consegui fazer os FK´s entre as tabelas tudo ok.
A minha pergunta é como posso fazer na aplicação para alimentar a tabela MOVIMENTACOES nos campos e de uma só vez como é feito utilizando um ´DBLookupComboBox´ para alimentar um campo só por exemplo???
Aguardo retorno... muito obrigado.
_________________
GOSTEI 0
Judafox
09/07/2004
Será que vo te que alterar as chaves primárias apra um campo somente???
Alguem me ajude!!!
Alguem me ajude!!!
GOSTEI 0
Paulo_amorim
09/07/2004
[quote:c31debee63=´Glauber de Bortoli´]Será que vo te que alterar as chaves primárias apra um campo somente???
[/quote:c31debee63]
Olá
Na minha opinião, a resposta eh não.
Mexa na aplicação, nao no modelo de dados...
O que vc quer exatamente?Como assim alimentar a tablea movimentação?
Você não pode fazer 2 DBLookUpComboBoxes?
Dá uma explicada melhor que a gente ajuda :)
Até+
[/quote:c31debee63]
Olá
Na minha opinião, a resposta eh não.
Mexa na aplicação, nao no modelo de dados...
O que vc quer exatamente?Como assim alimentar a tablea movimentação?
Você não pode fazer 2 DBLookUpComboBoxes?
Dá uma explicada melhor que a gente ajuda :)
Até+
GOSTEI 0
Rômulo Barros
09/07/2004
Com o componente TDBLookupComboBox voce resolverá o problema, configurando as propriedades:
1 - TDBLookupComboBox1:
DataSource, DataField(CodigoDependente),ListSource,ListField(NomeDependente) e KeyField(CodigoDependente).
2 - TDBLookupComboBox2:
DataSource, DataField(CodigoCliente),ListSource,ListField(NomeCliente) e KeyField(CodigoCliente).
1 - TDBLookupComboBox1:
DataSource, DataField(CodigoDependente),ListSource,ListField(NomeDependente) e KeyField(CodigoDependente).
2 - TDBLookupComboBox2:
DataSource, DataField(CodigoCliente),ListSource,ListField(NomeCliente) e KeyField(CodigoCliente).
GOSTEI 0
Paulo_amorim
09/07/2004
[quote:9d1f02ffc1=´Undeclared Identifier´]DataSource, DataField(CodigoCliente),ListSource,ListField(NomeCliente) e KeyField(CodigoCliente).[/quote:9d1f02ffc1]
Olá
Quando eu uso eu não configuro as 2 primeiras( DataSource e DataField)...pra que elas servem?
Até+
Olá
Quando eu uso eu não configuro as 2 primeiras( DataSource e DataField)...pra que elas servem?
Até+
GOSTEI 0
Rômulo Barros
09/07/2004
[quote:33b7ed79e8=´Undeclared Identifier´]DataSource, DataField(CodigoCliente),ListSource,ListField(NomeCliente) e KeyField(CodigoCliente).
Olá
Quando eu uso eu não configuro as 2 primeiras( DataSource e DataField)...pra que elas servem?
Até+[/quote:33b7ed79e8]
Exemplo:
Table Marcas
Cod_Marc
Nome_Marc
Table Modelos
Cod_Mod
Cod_Marc
Nome_Modelo
Para cadastrar um modelo, é necessário q o usuário selecione uma marca. Daí então a propriedade DataSource do meu DBLookupComboBox irá apontar para o datasource ligado a tabela de modelos (´select * from modelos), e a propriedade DataField eu configuro para o campo ´CodMarc´(este campo irá armazenar o código da marca que o usuário selecionar no dblookupcombobox). Deveremos configurar agora o listsource e o listfield(campo de listagem) e, por último, configuramos a propriedade KeyField(Campo de junção)
Deu pra entender? Quando o usuário selecionar uma ´Marca´ no dblookupcombobox, automaticamente em ´background´ o código da marca é armazenado do Field CodMarc da tabela Produtos, entendeu?
GOSTEI 0
Judafox
09/07/2004
Undeclared,
sobre o que vc respondeu....?
Se eu tiver dois DBLockupComboBoxs eles vão listar todos os registros da tabela...
Se os registros das tabelas forem esses
CLIENTES
1 - joão - 20
2 - teste - 25
DEPENDENTES
1 - 1 - joaquim - 10
2 - 1 - fulano - 12
1 - 2 - beltrano - 15
e quando eu quiser cadastrar uma movimentação para o dependende do ´teste´ por exemplo, eu seleciono o clinete ´teste´ no 1º DBLockupComboBox e quando vou selecionar o seu dependente no 2º DBLockupComboBox ele aparece tbm os dependentes do cliente ´joão´ assim podendo selecionar os outros registros da tabela... ele não vai deixar gravar... mas eu gostaria que nem mostrace os outros.
Obrigado por enquanto... :roll:
sobre o que vc respondeu....?
Se eu tiver dois DBLockupComboBoxs eles vão listar todos os registros da tabela...
Se os registros das tabelas forem esses
CLIENTES
1 - joão - 20
2 - teste - 25
DEPENDENTES
1 - 1 - joaquim - 10
2 - 1 - fulano - 12
1 - 2 - beltrano - 15
e quando eu quiser cadastrar uma movimentação para o dependende do ´teste´ por exemplo, eu seleciono o clinete ´teste´ no 1º DBLockupComboBox e quando vou selecionar o seu dependente no 2º DBLockupComboBox ele aparece tbm os dependentes do cliente ´joão´ assim podendo selecionar os outros registros da tabela... ele não vai deixar gravar... mas eu gostaria que nem mostrace os outros.
Obrigado por enquanto... :roll:
GOSTEI 0
Rômulo Barros
09/07/2004
[quote:6712cfa977=´Meu amigo ´]... eu seleciono o clinete ´teste´ no 1º DBLockupComboBox e quando vou selecionar o seu dependente no 2º DBLockupComboBox ele aparece tbm os dependentes do cliente ´joão´ assim podendo selecionar os outros registros da tabela... [/quote:6712cfa977]
Irá aparecer apenas os registros ´amarrados´ com a sua opção. Se não for, faça um Master/Detail :wink:
Irá aparecer apenas os registros ´amarrados´ com a sua opção. Se não for, faça um Master/Detail :wink:
GOSTEI 0
Paulo_amorim
09/07/2004
[quote:353f9f1984=´Undeclared Identifier´]
Deu pra entender? Quando o usuário selecionar uma ´Marca´ no dblookupcombobox, automaticamente em ´background´ o código da marca é armazenado do Field CodMarc da tabela Produtos, entendeu?[/quote:353f9f1984]
Olá
Aí que eunão entendi...pois eu sempre uso somente o ListSource, o ListField pra mostrar os campos, enquanto eu pego o KeyField pro campo de junção...e nao uso o DataSource...
Coloque 2 datasets...
o primeiro pega os dependentes...
o segundo pega as movimentaçoes WHERE dependente = :p1
dai no onClick do primeiro vc passa o parametro pro segundo DataSet...
Espero que ajude
Até+
Deu pra entender? Quando o usuário selecionar uma ´Marca´ no dblookupcombobox, automaticamente em ´background´ o código da marca é armazenado do Field CodMarc da tabela Produtos, entendeu?[/quote:353f9f1984]
Olá
Aí que eunão entendi...pois eu sempre uso somente o ListSource, o ListField pra mostrar os campos, enquanto eu pego o KeyField pro campo de junção...e nao uso o DataSource...
e quando eu quiser cadastrar uma movimentação para o dependende do ´teste´ por exemplo, eu seleciono o clinete ´teste´ no 1º DBLockupComboBox e quando vou selecionar o seu dependente no 2º DBLockupComboBox ele aparece tbm os dependentes do cliente ´joão´ assim podendo selecionar os outros registros da tabela... ele não vai deixar gravar... mas eu gostaria que nem mostrace os outros.
Coloque 2 datasets...
o primeiro pega os dependentes...
o segundo pega as movimentaçoes WHERE dependente = :p1
dai no onClick do primeiro vc passa o parametro pro segundo DataSet...
Espero que ajude
Até+
GOSTEI 0
Rômulo Barros
09/07/2004
Aí que eunão entendi...pois eu sempre uso somente o ListSource, o ListField pra mostrar os campos, enquanto eu pego o KeyField pro campo de junção...e nao uso o DataSource...
Pois é. Eu nunca utilizei o dblookupcombobox [color=red:558a7992e4]sem[/color:558a7992e4] configurar as propriedade DataSource,DataField,ListSource,ListField e KeyField. Utilizo DataSource para indicar em qual dataset será armazenado o valor do campo a ser listado. Quem indica o campo é a propriedade DataField
:wink: :wink: :wink: :wink:
GOSTEI 0