![]() |
Datenbank: DBase • Zugriff über: TDBF / BDE
"Post" von DBEdit & Co. mit Abort; verhindern
Hallo,
ich möchte verhindern, dass die datenintensiven Komponenten (TDBxxxxx) nach Bearbeitung automatisch TDataSet.Post; auslösen - die geänderten Daten sollen nur bei Klick auf Button1 gespeichert werden. Also habe ich einen Boolean mayModify mit false intialisiert und setze ihn nach Klick auf Button1 auf true. In der Ereignisbehandlung "OnBeforePost" habe ich dann folgendes geschrieben:
Delphi-Quellcode:
Das funktioniert soweit wunderbar. Nur muss der User jetzt die Daten auch speichern, sonst ist die weitere Navigation in der Tabelle unmöglich, weil sämtliche Methoden wie z.B. Next oder Last auch BeforePost aufrufen :cry:
procedure TForm1.Table1BeforePost(DataSet: TDataSet);
begin if not MayModify then begin Abort; end; MayModify := false; end; Wie kann ich mein Problem dennoch lösen? |
Re: "Post" von DBEdit & Co. mit Abort; verhind
Schau mal unter dem Stichwort CachedUpdates nach.
alex |
Re: "Post" von DBEdit & Co. mit Abort; verhind
Bzw. schau dir mal die Methode "Cancel" an. Damit wird ein Append/Edit-Versuch abgebrochen. Denn in der Regel postet dein Query/Table beim verlassen des Datensatzes automatisch.
|
Re: "Post" von DBEdit & Co. mit Abort; verhind
Das automatische Speichern wird durch das Verschieben des Datensatzzeigers ausgelöst. Insofern würde ich einfach das Verschieben verhindern, solange die Daten nicht durch den Benutzer gespeichert wurden:
Delphi-Quellcode:
Freundliche Grüße vom marabu
procedure TDataForm.TableBeforeScroll(DataSet: TDataSet);
begin if DataSet.State <> dsBrowse then Abort; end; |
Re: "Post" von DBEdit & Co. mit Abort; verhind
Erstmal vielen Dank für die Hilfe!
Zitat:
|
Re: "Post" von DBEdit & Co. mit Abort; verhind
So quer kann ich garnicht denken - sorry. Was soll denn das werden? Wie behält denn da der Benutzer deines Programms den Überblick, welche Änderungen er gemacht hat?
marabu |
Re: "Post" von DBEdit & Co. mit Abort; verhind
Ist doch ganz einfach - glaub ich :gruebel: :
Der Benutzer ändert die Daten eines Datensatzes und kann danach auf "Änderungen speichern" klicken oder auf "Abbrechen" bzw. einfach einen Datensatz weiter gehen. |
Re: "Post" von DBEdit & Co. mit Abort; verhind
Jetzt liest es sich so, als ob du nur das Standardverhalten beim Scrolling ändern möchtest. Packe einfach die Methode Cancel (hallo dominik) in das Ereignis BeforeScroll:
Delphi-Quellcode:
marabu
procedure TDataForm.TableBeforeScroll(DataSet: TDataSet);
begin if DataSet.State <> dsBrowse then Cancel; end; |
Re: "Post" von DBEdit & Co. mit Abort; verhind
Dann bin ich ja beruhigt - habe den anderen Dominik nämlich so verstanden :)
|
Re: "Post" von DBEdit & Co. mit Abort; verhind
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Zum besseren Verständnis habe ich mal eine Echse angehängt, die zeigt, was ich will ;) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:26 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz