Delphi Seattle FireDAC - Abrindo transação no FDQuery após open

SQL

Delphi

Firebird

17/10/2017

Estamos com uma situação peculiar, após um executar um open em uma query FireDAC de um select qualquer, está abrindo uma transação no banco automaticamente, porém isso só ocorre em algumas situações. Estamos dando uma estudada no componente para tentar identificar se há alguma configuração para evitar tal comportamento, mas toda ajuda é bem vinda.
Josias Maceda

Josias Maceda

Curtidas 0

Respostas

Rafael Mota

Rafael Mota

17/10/2017

Josias, conseguiu descobrir algo sobre o assunto? Estou com um problema semelhante e não consigo identificar.
GOSTEI 0
Josias Maceda

Josias Maceda

17/10/2017

Olá Mota! Para resolver o problema deve colocar no componente de connection do firedac ou mesmo no componente fdQuery as seguintes opções com os respectivos valores;
UpdateOptions -> RefreshMode = rmall;
FetchOptions -> Mode = fmall;

Se mudar no componente FdConnection ele já muda automaticamente para os componentes FdQuery ligados a ele;

Pode mudar em tempo de Design mesmo ou seja ali pelo ObjectInspector
GOSTEI 0
Rafael Mota

Rafael Mota

17/10/2017

Josias, obrigado pela resposta. Não sei se o meu problema é o mesmo que você tinha, no meu caso, em algumas situações as alterações ou inclusões feitas em algum registro, só persistiam no banco após fechar o sistema na máquina que estas alterações foram feitas. Eu deduzo que deve ser uma transação que é aberta em algum momento pelo próprio FireDac, mas não tenho certeza. Vou setar a opção UpdateOptions\\RefreshMode para rmall, como você sugeriu, inclusive a FetchOptions\\Mode já está fmall; Você acha que irá resolver ou o seu caso é totalmente diferente do meu?

Obrigado!
GOSTEI 0
Welinton Dias

Welinton Dias

17/10/2017

Só fazendo um adendo a questão, de fato, isso acontece porque ao dar um OPEN na FDQUERY o FireDac abre uma transação automaticamente, sendo fechada apenas após o comando CLOSE, por isso só aparece no banco quando fecha a aplicação (ao fechar a aplicação as QUERY são fechadas efetivando a transação), mas apenas dando um close na QUERY ou comitando as transações pendentes, já resolve sem ter a necessidade de fechar a aplicação. Você pode optar também por desativar esse controle automático de transações do FireDAC, para controlar de forma manual explicita via código.
GOSTEI 0
POSTAR