Mestre e Detalhe - Os dados do detalhe não aparecem

13/08/2008

2

Boa Tarde pessoal

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


Responder

Posts

14/08/2008

Jmlpod

Bom dia pessoal

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


Responder

16/08/2008

Godzilla_xf

OLá, olha só eu ja passei por isso e me lembro que se nao me engano todas as instruçoes sql destes componentes tem que estar em MAIUSCULO, e o nome do parametro do detalhe deve estar exatamente como o nome do campo chava da mestre. caso vc ja esteja com os sql em maiusculo manda ai os sql para a gente dar uma olhada. té +++


Responder

17/08/2008

Mahdak

http://www.firebase.com.br/fb/artigo.php?id=299


Responder

23/08/2008

Godzilla_xf

Olá de uma olhada nos providerFlags dos campos das tabelas pode estar ai o problema tbm, flw té +++


Responder