Mestre e Detalhe - Os dados do detalhe não aparecem
13/08/2008
0
Estou tentando trabalhar com Mestre/Detalhe utilizando dbexpress mas não me recordo oque devo configurar para os dados do detalhe aparecerem automaticamente. Até onde me lembro ... isso era realmente automatico.. se alguém puder me ajudar agradeço.
Inseri no datamodule os componentes: SQLConnectionCR, SQLDataSetMaster, DataSetProviderCR, DataSourceMaster E SQLDataSetDetail. Fiz a conexão e esta ok.
Coloquei as seguintes ligações:
SQLDataSetMaster --> propriedade ´SQLConnection´ = SQLConnectionCR
propriedade ´CommandText´ = coloquei minha instrução SQL principal.
DataSetProviderCR --> propriedade ´DataSet´ = SQLDataSetMaster
propriedade ´Options´ = poCascadeDeletes, poCascadeUpdates e poAutoRefresh como true. (Esqueci alguma ?)
propriedade ´UpdateMode´ = UPWhereKeyOnly
DataSourceMaster --> propriedade ´DataSet´ = SQLDataSetMaster.
SQLDataSetDetail --> propriedade ´DataSource´ = DataSourceMaster
propriedade ´SQLConnection´ = SQLConnectionCR
propriedade ´CommandText´ = inseri a instrução com o parâmetro igual a chave primaria do mestre.
Nos parametros dos SQLDataSet defini a propriedade DataType como Integer e a Value tb. Até aqui fiz a estrutura do mestre e detalhe no datamodule e acredito que esta ok.
Criei um form e coloquei os componentes: ClientDataSetAluno,
DataSourceAluno, DBGridAluno, ClientDataSetAlunoContato,
DataSourceAlunoContato. Inseri em uses o datamodule.
Dúvidas:
1) Pq não aparece o ´DataSetProviderCR´ para preencher na propriedade ´ProviderName´ do ClientDataSetAluno.
2) Como não consegui resolver a duvida 1, coloquei os componentes
(ClientDataSetAluno, DataSourceAluno,DBGridAluno, ClientDataSetAlunoContato e DataSourceAlunoContato) no datamodule e fiz as ligações. Busquei os campos no SQLDataSetMaster e no SQLDataSetDetail. Testei ambos com active = true ..tudo ok.
Fechei a conexão e em ClientDataSetAluno busquei novamente os campos (Duplo click no componente, depois Ctrl + A) para incluir o DataSetField (que seria a ligação do SQLDataSetMaster com o SQLDataSetDetail) = ok. Em ClienteDataSetAlunoContato coloquei na propriedade ´DataSetField´ o DataSetField incluido em ClienteDataSetAluno busquei os campos dele = ok
Aparentemente estava tudo ok ... Porém quando executei o programa os dados do detalhe não aparecem no grid. O programa tem um botão ´Localiza Aluno´, no evento onclick tem a instrução sql que ira buscar mais de 1000 alunos ... então pensei que buscaria o contato dos alunos automaticamente ... porém exibe somente os alunos ...
Alguém saberia me informar oq esta ocorrendo ?
obrigada
T+
Patricia
Jmlpod
Posts
14/08/2008
Jmlpod
Tentei novamente, fiz um banco com somente 3 tabelas, populei ... aparentemente o mestre e detalhe funciona pois quando ativo o clientdatasetMaster abre automaticamente os outros clientDataSet mas os dados dos detalhes não aparecem no grid :(
Se alguém tiver alguma sugestão, agradeço
T+
Patricia
16/08/2008
Godzilla_xf
23/08/2008
Godzilla_xf
Clique aqui para fazer login e interagir na Comunidade :)