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??


Fabiano_aprendiz

Fabiano_aprendiz

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 :

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

Marco Salles
Responder

Gostei + 1

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar