I'm using UniDac6.0.2(Professional) for Firebird2.1
To commit my operations manually, I set the AutoCommit property of TUniQuery to False.
Also, to avoid the dataset is closed when commit or rollback, I used different transactions for connection and dataset.
But, eventhough I don't use different transactions for reading and modifying data, below code works good.
When do I use Uniquery1.UpdateTransaction?
Also, How do I use Uniquery1.UpdateTransaction?
Code: Select all
procedure TForm1.Button1Click(Sender: TObject);
begin
DM.UniConnection1.AutoCommit:=true; //DM: DataModule
DM.UniConnection1.DefaultTransaction := UniTransaction1;
UniQuery1.Transaction := UniTransaction2;
UniQuery1.SpecificOptions.Values['AutoCommit'] := 'False';
//Reading Data
With UniQuery1 Do
Begin
Close;
Sql.Clear;
SQL.Text:='Select * From Car';
Open;
end;
//Modifying data
If DM.UniConnection1.InTransaction=False Then DM.UniConnection1.StartTransaction;
Try
With UniQuery1 Do
Begin
Append;
FieldByName('CARNAME').AsString:=Trim(EdCarName.Text);
FieldByName('ADDR').AsString:=Trim(EdAddr.Text);
FieldByName('TEL').AsString:=Trim(EdTel.Text);
Post;
DM.UniConnection1.Commit;
End;
Except
Dm.UniConnection1.Rollback;
UniQuery1.CanCel;
End;
end;
Peace