Re: [firebase-br] Dúvidas ClientDataSet

Joubert Rinaldi rinaldi.vieira em gmail.com
Seg Set 27 11:34:18 -03 2004


Então era do "Nested Table" q vc estava falando.

Conheço sim. So q não estou mudando nenhuma propriedade no CDS.

Tem alguma propriedade q deveria estar alterando?

[]'s





On Mon, 27 Sep 2004 08:47:46 -0300 (ART), Francisco Thiago Almeida
<jeandeadlucky em yahoo.com.br> wrote:
> Bom dia!
> Seguinte:
> Você conhece a idéia do "Nested Table?" se não conhece (ou conhece), é possível aplicar usando CDS. Veja como:
> Suponhamos que temos dois DataSet's, DataSetM e DataSetD... e dois CDS, CDSM e CDSD e UM provider.... DSPMD (nomes estranhos né?)..
> No DataSetM você vai escrever o seu SQL normalmente afim de trazer os registro que voce deseja, apenas nao esqueca de trazer a chave desta tabela.
> Agora no DataSetD voce vai escrever um sql do tipo...
> Select *
> from Detalhe
> where chave_FK = Nome_da_Chave_na_tabela_master
> Feito isso, vc vai adicionar um DataSource (dtsMD) e confgurar a propriedade dataset dele para apontar para o DataSetM... e no DataSetD a propriedade DataSource vai apontar para o dtsMD. Pronto! o relacionamento Mestre Detalhe foi feito com os componetes.
> Lembra do Provider? Voce vai aponta-lo para o DataSetM e o CDSM vai apontar para o Provider...
> Feito isso, adicione todos os campos no CDSM. Você vai perceber um outro campo no CDSM que nao faz parte da sua tabela, provavelmente um DataSetD (esse será o nome do campo).
> Agora no CDSD voce vai apontar a propriedade DataSetField para o CAMPO DataSetD do ClienteDataSet CDSM e pronto! está configurado. Se você der um ApplyUpdates em qualquer um dos CDS's você estára trabalhando com uma só transação.
> Não deve ter ficado muito claro, pq estou com um pouco de pressa.. mas qualquer dúvida, pode me procurar..
> 
> Boa sorte
> Thiago
> 
> 
> 
> Joubert Rinaldi <rinaldi.vieira em gmail.com> wrote:
> Francisco,
> 
> Também estou começando com CDS e a sua resposta deixou duvidas.
> 
> > Não é necessário Iniciar transacoes com o CDS. O PROVIDER faz isso por vc.. até mesmo em casos de Mestre - Detalhe.. se configurado corretamente
> 
> > Nenhum.. Só um conselho.. faca a relacao Mestre Detalhe no IBDataSet...
> 
> Esplica melhor esse Mestre-Detalhe configurado corretamente e
> Mestre-Detalhe com IBDataSet.
> 
> []'s
> 
> On Fri, 24 Sep 2004 12:12:40 -0300 (ART), Francisco Thiago Almeida
> wrote:
> > Realmente é difícil de se encontrar documentacao boa sobreo CDS... mas vou responder algumas questoes suas:
> >
> > 1) Usando o DataSetProvider eu configuro algumas opções para true:
> > poCascadeDelete, poCascadeUpdates, poAllowMultipleRecordUpdates e
> > poPropogateChanges
> >
> > Eu particularmente não configuro nenhuma delas....
> >
> > 2) Algumas vezes recebo um erro CLientDataset(Nome do componente):
> > Record not found. Isso acontece em uma relação master detail quando eu
> > vou editar um registro mestre e surge essa mensagem e ele fecha e abre a
> > tabela (porém atualiza os dados)
> >
> > Não sei como você está fazendo as atualizações mas.. recentemente postei uma mensagem aqui na lista com um passo-a-passo de Mestre - detalhe com CDS... seria util pra vc...
> >
> > 3) eu inicio as transações explicitamente, até porque todo o controle de
> > navegação, inserção, etc eu faço com botões personalizados. Muda alguma
> > coisa se eu usar o TbNavigator em relação às transações? Em alguns posts
> > eu li que com o ClientDataSet a transação é iniciada automaticamente
> > pelo ClientDataset.
> >
> > Não é necessário Iniciar transacoes com o CDS. O PROVIDER faz isso por vc.. até mesmo em casos de Mestre - Detalhe.. se configurado corretamente
> >
> > 4) Algumas vezes quando abro um formulário com a relação Master-detail
> > recebo uma mensagem de Key violation (EDBClient). Não consegui
> > identificar o porque!
> >
> > Nao sei pq o erro.. mas possivelmente vc tem um valor duplicado e um indice (no CDS) com unique selecionado.... ou pode ser nada disso.. soh olhando o codigo pra saber
> >
> > 5) Algumas tabelas eu uso a ordenação dos dados em um DbGrid com indice
> > alterável quando clico no título do Grid. No WinXp funciona 100%, já no
> > WinMe ou inferiores não funciona. Tem alguma incompatibilidade de SO?
> >
> > Voce modifica o indice do cds certo? Okay. O WinXP e 2000 tem um gerenciamento de memoria melhor que o 9x.. logo, alguma violacao de memoria esta acontecendo nesta troca... Verifique no codigo da troca se algo nao estah errado.. faca isso em um 9x se possivel
> >
> > 6) Existe mais algum cuidado especial que preciso ter (além das relações
> > corretas) quando uso master-detail e clientdataset + DataSetProvider +
> > IbDataset + Transaction?
> >
> > Nenhum.. Só um conselho.. faca a relacao Mestre Detalhe no IBDataSet...
> >
> > Nao sei se existe esta propriedade no IBDataSet, mas se existir Unidirectional... Coloque True nela.
> >
> > []'s e boa sorte!
> >
> > Thiago
> >
> >
> >
> > "Ricardo H. Rekowsky" wrote:
> > Pessoal,
> >
> > passei os últimos dias pesquisando no fórum do ClubeDelphi, vários sites
> > que tenho cadastrados sobre Delphi aqui no Brasil e fora e pelo Google
> > sobre como usar o CLientDataSet direito e vi diversas sugestões
> > contraditórias. Como acabei me confundindo mais do que esclarecendo
> > gostaria, se possível, contar com a ajuda de vocês para entender melhor
> > como funciona esse componente (principalmente com o uso de master-
> > detail) com algumas perguntas:
> >
> > 1) Usando o DataSetProvider eu configuro algumas opções para true:
> > poCascadeDelete, poCascadeUpdates, poAllowMultipleRecordUpdates e
> > poPropogateChanges
> > --> preciso realmente configurar essas opções? por que percebi que sem
> > elas algumas vezes os dados não são atualizados.
> > 2) Algumas vezes recebo um erro CLientDataset(Nome do componente):
> > Record not found. Isso acontece em uma relação master detail quando eu
> > vou editar um registro mestre e surge essa mensagem e ele fecha e abre a
> > tabela (porém atualiza os dados)
> > 3) eu inicio as transações explicitamente, até porque todo o controle de
> > navegação, inserção, etc eu faço com botões personalizados. Muda alguma
> > coisa se eu usar o TbNavigator em relação às transações? Em alguns posts
> > eu li que com o ClientDataSet a transação é iniciada automaticamente
> > pelo ClientDataset.
> > 4) Algumas vezes quando abro um formulário com a relação Master-detail
> > recebo uma mensagem de Key violation (EDBClient). Não consegui
> > identificar o porque!
> > 5) Algumas tabelas eu uso a ordenação dos dados em um DbGrid com indice
> > alterável quando clico no título do Grid. No WinXp funciona 100%, já no
> > WinMe ou inferiores não funciona. Tem alguma incompatibilidade de SO?
> > 6) Existe mais algum cuidado especial que preciso ter (além das relações
> > corretas) quando uso master-detail e clientdataset + DataSetProvider +
> > IbDataset + Transaction?
> >
> > Grato por eventuais esclarecimentos e desculpem o bombardeio de
> > perguntas.... Mas minhas pesquisas não me levaram mais adiante do que
> > isto.
> > Ricardo
> > ______________________________________________
> > FireBase-BR (www.firebase.com.br)
> > Para editar sua configuração na lista, use o endereço http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
> >
> >
> > -----------------------------------------------
> > Francisco Thiago de Almeida
> > MRL Consultoria em Informática
> > Divisão Desenvolvimento e Banco de Dados
> > Franca/SP
> >
> > ---------------------------------
> > Yahoo! Messenger 6.0 - jogos, emoticons sonoros e muita diversão. Instale agora!
> >
> >
> > ______________________________________________
> > FireBase-BR (www.firebase.com.br)
> > Para editar sua configuração na lista, use o endereço http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
> >
> 
> --
> MSN: jcombr em hotmail.com
> 
> 
> 
> ______________________________________________
> FireBase-BR (www.firebase.com.br)
> Para editar sua configuração na lista, use o endereço http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
> 
> -----------------------------------------------
> Francisco Thiago de Almeida
> MRL Consultoria em Informática
> Divisão Desenvolvimento e Banco de Dados
> Franca/SP
> 
> ---------------------------------
> Yahoo! Messenger 6.0 - jogos, emoticons sonoros e muita diversão. Instale agora!
> ______________________________________________
> FireBase-BR (www.firebase.com.br)
> Para editar sua configuração na lista, use o endereço http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
> 



-- 
MSN: jcombr em hotmail.com




Mais detalhes sobre a lista de discussão lista