Ir para conteúdo
  • Cadastre-se

dev botao

MasterDetail Firedac CacheUpdate


  • Este tópico foi criado há 1964 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Membros Pro

Boa noite a todos.

Estou com uma situação há algum tempo em tabelas detalhes. Uso master X detail com Firedac, Firebird e cacheupdate ativado. Estou utilizando também um FDSchemaAdapter, porém, estou com um problema ao remover itens do detalhe em cache. Se inicio uma nova venda e incluo vários ítens, quando necessito remover um dos ítens funciona normalmente, mas se resolver remover todos os ítens, quando removo o último, o cache bagunça retornando todos os itens anteriores e as vezes té duplicando os ítens. Para resolver isso, a cada delete, tenho que gravar em disco com fdsschema.applysupdates, porém nesse caso o cache updates não é utilizado de forma correta. Uso Delphi Berlim e consultando alguns conhecidos, me disseram que é um bug mesmo. Já testei no tokio e também ocorre o problema.

Alguém já passou por isso e resolveu de alguma outra forma?

Muito Obrigado...

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

@alves_sp, realmente deve funcionar, o meu também funciona, mas o fato de utilizar o applyupdates a cada delete, perdemos a função do cache nesse ocasião, correto? já fiz inúmeros testes, mas quando executo delete no ultimo registro da detalhe, e resolvo cancelar com cancelupdates, ai que gera a bagunça. No seu ocorria a mesma situação?

Link para o comentário
Compartilhar em outros sites

 

qryVenda_item -> MasterSource     _> Datasource ligado a queryVenda

 

Venda  -> Append  -> Post -  SchemaAdapter.ApplyUpdates(0);

Venda_item -> Append  -> Post -  SchemaAdapter.ApplyUpdates(0);

quando cancelo a venda deleto o registro venda  que automaticamente delete o venda item

no caso de cancelar o item  uso a  função como citado acima.

Não tive erro fazendo assim

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Boa tarde @alves_sp

Nesse formato, quando insiro uma nova venda e novos itens, na sequencia já grava no banco usando o applyupdates, assim também não tenho problemas. E quando efetuar a exclusão do item, como executa o applyupdates, também atualiza no banco e também não temos problemas. Mas perco as funcionalidades do cacheupdates, por exemplo, vamos pensar que somente no final da inserção da venda completa eu queira aplicar no banco e no meio dessa edição o usuário resolve remover ítens apenas usando o delete. Caso o usuário remova todos os itens, ocorre o erro em cache e para que não ocorra, tenho que aplicar as mudanças no banco usando o applyupdates, basicamente da mesma forma que você faz, mas nesse momento, se a venda que ainda não foi gravada no banco, será gravada e então não consigo cancelar a venda, pois, a mesma já atribuiu sei ID. É claro que isso não me traz grandes problemas, mas gostaria de deixar o cache em master x detail funcionando perfeitamente.

Vou continuar tentando e se conseguir uma solução, posto aqui.

Se por acaso quiser ver ao vivo o que ocorre e trocar experiencias, me avisa que te adiciono no skype.

Por hora muito obrigado pela ajuda.

Abraços!

Link para o comentário
Compartilhar em outros sites

  • 11 meses depois ...

Olá Marcelo,
Eu estou com o mesmo problema descrito por você, estou pesquisando bastante uma solução e efetuando teste e teste, verificando cada propriedade do FireDac. Mas até agora o problema de apagar todos os registros do detalhe é o mesmo,
sempre retornar os registros apagados.

Link para o comentário
Compartilhar em outros sites

  • Membros Pro
54 minutos atrás, bochnia disse:

Olá Marcelo,
Eu estou com o mesmo problema descrito por você, estou pesquisando bastante uma solução e efetuando teste e teste, verificando cada propriedade do FireDac. Mas até agora o problema de apagar todos os registros do detalhe é o mesmo,
sempre retornar os registros apagados.

 

O cache bagunça após a exclusão do último registro do detalhe, correto?

Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois ...

Olá Marcelo,
Entrei em contato com a Embarcadero e realmente é um Bug eu testei no Delphi XE5 até o 10.2.3, foi informado que na atualização para o Delphi 10.3 esse problema estará solucionado, também me foi dito que existe uma solução temporária que ao meu ver não vai solucionar, pois existe alguns efeitos colaterais, melhor mesmo aguardar o atualização.

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • 1 mês depois ...
  • Administradores

Boa tarde

Tópico será fechado por estar inativo a algum tempo, caso necessário, por favo crie um novo tópico.

Att.

Consultora SAC ACBr

Juliana Tamizou

Gerente de Projetos ACBr / Diretora de Marketing AFRAC
Ajude o Projeto ACBr crescer - Seja Pro

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 1964 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.

The popup will be closed in 10 segundos...