DELPHI - Dataset

01/02/2021

0

Bom dia!
Estou fazendo um relacionamnto Mestre/Detalhe no Delphi utilizando TClientDataSet, TDataSetProvider, TClientDataSet e TDataSource. Está funcionando corretamente. Tenho as seguintes tabelas Pessoa (Mestre) e Endereço (Detalhe). O que ocorre é que ao tentar inserir um registro totalmente novo, caso eu não preencha completamente os dados obrigatórios da Pessoa e tente já inserir um novo endereço a aplicação apresenta um erro solicitando que preencha os campos obrigatórios da Pessoa antes do mesmo de eu tentar persistir esses dados no ClientDataSet para depois aplicá-los ao banco. Pela pilha de execução observei que antes do Insert do dataset Detalhe ele obriga o Post do DataSet Mestre. Eu não queria este comportamento. Gostaria que o post fosse realizado apenas com o clique do botão Salvar da minha tela de cadastro. Existe alguma configuração ou recurso para desabilitar este comportamento do componente?

Obrigado !
Ricardo Alves

Ricardo Alves

Responder

Post mais votado

02/02/2021

Olá Ricardo

Não sei se entendi bem, mas se me permite uma sugestão, poderia usar em cache, ou seja só gravado em memoria. Assim comitando no banco só momento que deseja.

Fonte útil de estudo:
https://www.delphipower.xyz/guide_3/using_a_client_dataset_to_cache_updates.html

Danilo Oliveira

Danilo Oliveira
Responder

Mais Posts

04/02/2021

Ricardo Alves

Olá Ricardo

Não sei se entendi bem, mas se me permite uma sugestão, poderia usar em cache, ou seja só gravado em memoria. Assim comitando no banco só momento que deseja.

Fonte útil de estudo:
https://www.delphipower.xyz/guide_3/using_a_client_dataset_to_cache_updates.html


Obrigado, amigo ! O que acontece é que num mesmo form eu tinha dbedits ligados a tabela Mestre e a tabela Detalhe. Ao incluir um novo registro, se o usuário deixasse de informar algum dbedit ligado a um campo obrigatório da tabela mestre e tentasse preencher algum dbedit ligado a tabela detalhe uma mensagem de erro era levantada exigindo preenchimento dessa informação, apesar de eu não estar utilizando o post nem applyuppdates ainda. Percebi debugando que esse é o comportamento do Delphi mesmo, o dataset detalhe obriga um post no dataset mestre, gerando o "erro". Acabei resolvendo passando um default expression nos campos obrigatórios do mestre e validando os mesmos depois no meu applyupdates.
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

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

Aceitar