Post funzt nur, wenn du vorher Edit oder Insert aufgerufen hast. Es macht aber keinen Sinn, deshalb dann Edit oder Insert aufzurufen.
Also: Grundsätzlich wird ein Datensatz in einem TDataset zuerst mit Insert oder Update für die Bearbeitung bereit gemacht, nach der Bearbeitung muss man dann Post ausführen.
In einem DBGrid wird automatisch Insert aufgerufen, wenn du in der letzten Zeile den Pfeil nach unten drückst, Update wird ausgeführt, wenn du in irgendeiner Zelle etwas veränderst. Ein DBGrid postet auch automatisch, wenn du diese Zeile verlässt und auf einen anderen Datensatz gehst.
Fügst du aber nur ein, verlässt aber nicht diese Zeile und beendest sofort das Programm, so wird kein Post ausgeführt, der Datensatz landet nicht in der Datenbank.
Hier, das solltest du in dein Onclose-Event packen:
Quelltext
1: 2:
| if (Query1.State=dsInsert) or (Query1.State=dsUpdate) then Query1.Post; |
Cu,
Udontknow