Hi Hansa,
Du hast recht, irgendwo muss ein Post auftauchen, per Code oder über eine datensensitive Komponente (beim Wechseln des Datensatzes), denn Commit postet ja nicht automatisch. Daher ist es eine recht gängige Methode, vor dem Schließen einer Datenmenge nachzuschauen, ob der aktuelle Datensatz gerade in Arbeit ist. Ist er das, kann man posten, bzw. wie in Deinem Fall, vorher fragen:
Delphi-Quellcode:
if MessageDlg('speichern ?',mtInformation, [mbYes, mbNo], 0) = mrYes then
with Dataset1 do begin
if State in [dsEdit, dsInsert] then Post;
Transaction.Commit;
end else
Transaction.Rollback;