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

17/10/2017

0

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

Responder

Posts

27/03/2018

Rafael Mota

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

27/03/2018

Josias Maceda

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
Responder

04/04/2018

Rafael Mota

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

17/08/2022

Welinton Dias

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