Ir para conteúdo
  • Cadastre-se

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

Recommended Posts

  • Membros Pro
Postado

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...

Postado

Eu uso assim e funciona muito bem

function doDelete_Item: Boolean;

var
  iErr: integer;
begin
  iErr := qryVenda_Item.SchemaAdapter.ApplyUpdates(0);
  if iErr > 0 then
   Result := False
  else
    Result := True;
  qryVenda_item.CommitUpdates;

end;

  • Membros Pro
Postado

@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?

Postado

 

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

  • Membros Pro
Postado

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!

  • 11 meses depois ...
Postado

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.

  • Membros Pro
Postado
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?

  • 2 semanas depois ...
Postado

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
  • 1 mês depois ...
  • Administradores
Postado

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 !!

  • Este tópico foi criado há 2269 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...
The popup will be closed in 10 segundos...