FireDac - TFDQuery + TDataSource - Problema com comando Refresh

Delphi

16/04/2015

Pessoal, estou usando TFDQuery + TDataSource para controlar um CRUD, fazendo os comando direto no TFDQuery (Insert, Post e etc.). Para isso mudei o parâmetro CachedUpdates para True. Porém estou tendo problemas com o comando Refresh.
Após dar um Post, dou um ApplyUpdate, e em seguida um Refresh na query para poder atualizar o DbGrid da tela. Porém ao executar o Refresh depois de um Insert, acontece o seguinte erro:

"Cached updates must be commited or canceled and batch mode terminated before refreshing"

E isso somente depois de uma inserção, depois de uma edição não acontece.

Alguém tem uma ideia de qual seria a solução correta para esta situação?

Eu dei um Close e Open na query, mas gostaria de entender a origem do erro para ter certeza de quando usar o Refresh ou não.
Rodrigues

Rodrigues

Curtidas 0

Respostas

Renata Macedo

Renata Macedo

16/04/2015

O ApplyUpdate tem que ser antes de qualquer post e o refresh depois.
GOSTEI 0
Natanael Ferreira

Natanael Ferreira

16/04/2015

Rodrigues, faça um teste utilizando o CommitUpdates após o ApplyUpdates:

FDQuery1.CommitUpdates;


Veja o link abaixo da documentação oficial:
http://docwiki.embarcadero.com/RADStudio/Tokyo/en/Caching_Updates_(FireDAC)
GOSTEI 0
POSTAR