I'm trying to replicate your issue, but it was not easy. It says "updates must be applied before refresh" or "the dataset cannot be opened". I finally succeeded to do that after adding following event handler.
procedure TfrFirebird.SQLQuery1BeforeRefresh(DataSet: TDataSet);
begin
SQLQuery1.ApplyUpdates;
SQLQuery1.Close;
SQLQuery1.Open;
end;
Transaction and Post are different. "Post" is done at local TDataSet level. At the TDataSet level, if you delete a record or change a field and move to other record, the changes are "post"ed automatically. The refresh button will remain green when you edit a cell, and move only within the same record.
Transaction takes care of modifying the contents (Insert, Delete, Update) of the server database table --- it must be related with "ApplyUpdates".