Potrebujem vedieť, či cmdDeposit_Upd.Transaction má "neukončené" úlohy. Myslím tým, že bol spustený (Execute), ale ešte to nebolo potvrdené, alebo zrušené (Commit, Rollback).
Vidím to dvoma spôsobmi a to pomocou:
- premennej formulára
- StartTransaction, Rollback, Commit.
Existuje nejaký iný spôsob zistiť aktuálny stav? DatasetCount po Execute je vždy nula. Samostatný Transaction.Active nie je správna cesta.
Ako mám správne postupovať?
// V DataModul
trnNoAutoCom := TFDTransaction.Create(Self);
trnNoAutoCom.Connection := conFBBasic;
trnNoAutoCom.Options.AutoCommit := False;
trnUpdate.Options.ReadOnly := False;
trnUpdate.Options.Isolation := xiReadCommitted;
trnNoAutoCom.Options.DisconnectAction := xdRollback;
function CreateNoAutoComCmd(AOwner: TComponent): TFDCommand;
begin
Result := TFDCommand.Create(AOwner);
Result.Connection := dtmdBasic.conFBBasic;
Result.Transaction := dtmdBasic.trnNoAutoCom;
end;
cmdDeposit_Upd := CreateNoAutoComCmd(Self);
...
while Assigned(Node) do
begin
if Node.CheckState = csCheckedNormal then
begin
...
cmdDeposit_Upd.Execute();
end;
Node := vstDeposit.GetNext(Node);
end;