ich stehe vor folgendem Problem. In einem Formular mit Kunden habe ich ein Textfeld mit dem Namen des Kunden. Dieser soll grundsätzlich geändert werden können. Jedoch soll der Anwender vor dem Ändern des Kundennamens über eine Meldung gefragt werden, ob er die Änderung wirklich durchführen will. Wählt er OK soll die Änderung gespeichert werden, wählt er ABBRECHEN soll die Änderung rückgängig gemacht werden.
Hat jemand einen Vorschlag, wie man dies erreichen könnte, vermutlich wohl in Verbindung mit einem Makro?
deine ursprüngliche Überschrift bezieht sich auf den ganzen Datensatz.
Diesbezügliche Einstellungen kannst du global über Extras/ Optionen / Bearbeiten/Suchen ändern.
Wählt er OK soll die Änderung gespeichert werden, wählt er ABBRECHEN
soll die Änderung rückgängig gemacht werden.
Hat jemand einen Vorschlag, wie man dies erreichen könnte,
vermutlich wohl in Verbindung mit einem Makro?
nein, mit einem entsprechenden VBA - Code. Ein Makro wäre da die falsche Wahl.
Du mußt folgendes in VBA programmieren:
Beim Ereignis: bei Fokuserhalt
den Inhalt des Namenfeldes in einer Variablen zwischenspeichern.
Beim Ereignis: bei Fokusverlußt
MSGBOX erstellen und fragen
wenn OK = keine weiteren Maßnahmen
wenn Abbruch = Wert der Variablen wieder in das Namensfeld schreiben
das ist eigentlich nicht notwendig, das erledigt Access fuer dich hierzu gibt es den Member .oldValue wenn was veraendert wurde.
Beim Ereignis: bei Fokuserhalt
den Inhalt des Namenfeldes in einer Variablen
zwischenspeichern.
Das ganze im Ereignis „NachAktualisieren“ verhindert, das die Box auch erscheint wenn man mit TAB duch das Formular laeuft bzw. nichts aendert. Bei einer Aenderung steht in feldname.oldValue dann der vorherige Wert drin, den man mittels
feldname.value = feldname.oldValue zurueckstetzen kann, me.Undo tuts auch, aber da werden auch Aenderungen in anderen Feldern zurueckgesetzt.
Beim Ereignis: bei Fokusverlußt
MSGBOX erstellen und fragen
wenn OK = keine weiteren Maßnahmen
wenn Abbruch = Wert der Variablen wieder in das Namensfeld
schreiben