Speichern geht eigentlich auch recht einfach mit DataSet.Post
nein?
Das Dataset.Post speichert ja nur, was schon im Dataset drin ist, aber wenn das Edit den Wert noch nicht übergeben hat,
und dann ist der Wert nach dem Post auch weg, da im AfterPost/AfterScroll die Edits sich den aktuellen Wert des Datasets holen.
Das TDBEdit von Delphi übergibt den Wert sofort beim Edit.OnChange. Beim Dataset.Post wird das dann problemlos gespeichert.
Es gibt aber DBEdits anderer Hersteller, die übergeben "standardmäßig" den eingegebenen Wert erst beim Edit.OnExit oder eben z.B. bei sowas wie Edit.Post oder Edit.Update, bzw. Edit.DataController.Post ...
Bis zu diesem Moment weiß das Dataset noch nichtmal, dass es eine Änderung gab/gibt.
Funktionsbeispiel:
- dein TDataset und das eine TField darin ist ein TMemo
- dein Dataset.Post wäre demnach Memo.Lines.SaveToFile
- das DBEdit ist ein TEdit
- normal macht das Edit beim Edit.OnChange ein {Memo.Lines[0]} Memo.Lines.Text := Edit.Text
- aber es gibt auch "bessere" Edits, die machen das nicht bei jedem einzelnen OnChange, sondern nur einmal beim OnExit (oder bei einem expliziten Update-Befehl)
- Hast du jetzt eines der besseren DBEdits und machst nun dein Post (Memo.Lines.SaveToFile), ohne vorher z.B. den Fokus zu ändern, dann ist dort die Änderung noch nicht enthalten.
- -
- ach ja, beim Memo.OnChange natürlich Edit.Text := Memo.Lines[0];
, was dann quasi beim Open/Load/AfterScroll den Inhalt des DBEdits füllt