Fórum Cadastro usando Mestre/Detalhe (DBExpress) #325252
12/07/2006
0
Caros colegas,
Estou fazendo minha primeira aplicação usando Firebird com DBExpress(meu delphi é o 7) e estou tendo algumas dificuldades. Resolvi fazer um relacionamento Mestre/Detalhe entre as tabelas, mas parece q naum está funcionando. Vamos lá, minha aplicação é um cadastro de visitas e possuo apenas 2 tabelas no banco. A tabela de Visita q possui os seguintes campos: VIS_CODIGO(PK), VIS_ANDAR, VIS_SALA, VIS_CONTATO, VIS_REINGRESSO, VIS_DATA, VIS_HORA e CLI_CODIGO(FK) e a tabela de Cliente com os campos: CLI_CODIGO(PK), CLI_NOME, CLI_IDENTIDADE e CLI_CPF.
No DataModule eu colequei um ClienteDatSet, um DataSetProvider e uma Query para a tabela de Visita(q ficou como mestre) e o mesmo para tabela de Cliente(ficou como Detalhe) além de um DataSource q está ligado no ClientDataSet da Visita. Na propriedade MasterField do ClientDatSet de Cliente eu liguei o campo CLI_CODIGO das duas tabelas. Quando mando gravar, os dados estão sendo gravados nas 2 tabelas, mas o campo CLI_CODIGO da tabela de visitas não está recebendo o valor do campo CLI_CODIGO da tabela de Cliente e com isso o relacionamento não está ocorrendo. O q pode está errado??
Estou fazendo minha primeira aplicação usando Firebird com DBExpress(meu delphi é o 7) e estou tendo algumas dificuldades. Resolvi fazer um relacionamento Mestre/Detalhe entre as tabelas, mas parece q naum está funcionando. Vamos lá, minha aplicação é um cadastro de visitas e possuo apenas 2 tabelas no banco. A tabela de Visita q possui os seguintes campos: VIS_CODIGO(PK), VIS_ANDAR, VIS_SALA, VIS_CONTATO, VIS_REINGRESSO, VIS_DATA, VIS_HORA e CLI_CODIGO(FK) e a tabela de Cliente com os campos: CLI_CODIGO(PK), CLI_NOME, CLI_IDENTIDADE e CLI_CPF.
No DataModule eu colequei um ClienteDatSet, um DataSetProvider e uma Query para a tabela de Visita(q ficou como mestre) e o mesmo para tabela de Cliente(ficou como Detalhe) além de um DataSource q está ligado no ClientDataSet da Visita. Na propriedade MasterField do ClientDatSet de Cliente eu liguei o campo CLI_CODIGO das duas tabelas. Quando mando gravar, os dados estão sendo gravados nas 2 tabelas, mas o campo CLI_CODIGO da tabela de visitas não está recebendo o valor do campo CLI_CODIGO da tabela de Cliente e com isso o relacionamento não está ocorrendo. O q pode está errado??
Fabiano_aprendiz
Curtir tópico
+ 0
Responder
Post mais votado
12/07/2006
fabiano...Veja um exemplo usando as tabelas CUSTORME e SALES
To fazendo um exemplo com mestre detalhes usando o Banco Employee e dele as tabelas CUSTORME e SALES . Que se relacionam atraves da Chave CUST_NO
Então pela biografia faço assim :
[b:ddbae00070]Aqui finalizo e faço [/b:ddbae00070] :arrow: Esta etapa é muito importante , para aparecer o campo (Nested Dataset para que se possa liga-lo
tente adaptar a sua necessidade e veja se ainda precisa de ajuda...
boa sorte...
To fazendo um exemplo com mestre detalhes usando o Banco Employee e dele as tabelas CUSTORME e SALES . Que se relacionam atraves da Chave CUST_NO
Então pela biografia faço assim :
Citação:
SQLConnetion -->>> Conecto com o Banco
SqlQuery
a)Connection --->> SqlConnection1
b)Propriedade Sql digito : Select * From CUSTOMER
3)DataSetProvinder
a)Connection --->> SqlConnection1
b)DataSet -->> SqlQuery1
4)ClinteDataSet1
a)ProviderName -->> DataSetProvider
5) DataSorce1
a)Dataser -->> ClientDataSet1
6)DbGri1
DataSorce --->> DataSet1
7)DbNavigator
DataSouce -->> Dataset1
Relacionamento
Citação:
DataSorce2
a)DataSet -->>> SqlQuery1
SqlQuer2
a)Connection --->> SqlConnection1
b)DataSouce --->> DataSorce2;
c)Propriedade Sql digito :
Select * From SALES WHERE CUST_NO=:CUST_NO
Clintdataset2
a)DataSetFields -->> ClientDataSet1SQLQuery2
DataSource3
a)DataSet -->> ClintDataSet2;
DbGrid2
a)DataSouce -->> Datasorce3;
DbNavegator2
a)DataSource---DataSouce3;
[b:ddbae00070]Aqui finalizo e faço [/b:ddbae00070] :arrow: Esta etapa é muito importante , para aparecer o campo (Nested Dataset para que se possa liga-lo
Código:
ClientDataSet1
a)Active igual a True
b)Dois clichs no COmponente e Adiciono All
c)No Final aparece um campo (Nested Dataset) que é o Relacionamento em si
ClintDataset2
a)Active igual a True
tente adaptar a sua necessidade e veja se ainda precisa de ajuda...
boa sorte...
Marco Salles
Responder
Gostei + 1
Clique aqui para fazer login e interagir na Comunidade :)