Hallo, liebes Forum!
Vorab bitte ich um Entschuldigung, dass ich noch keine Links angebe. Ich bekomme stets die Meldung
"Im Textkörper dürfen keine Bilder oder Links enthalten sein, bis Ihr Konto von uns geprüft werden kann."
angezeigt ... Ich ergänze diese zeitnah, sobald die Verifikation durch ist! Nun zum Anliegen:
Seit Ewigkeiten ärgere ich mich über die offensichtlich nicht funktionierende Methode Undo() für Formularfelder, im speziellen Fall eines Kombinationsfeldes. Im Event BeforeUpdate() ist OldValue identisch mit dem aktuellen Wert. Die Bestätigung dafür habe ich nun endlich gefunden (ich kann den Bug auch für 2010 bestätigen):
10 things that are [still] broken in Access 2007... and maybe in 2010
So weit, so gut. Nun versuche ich mich an einem Workaround. Hierfür habe ich im Formular eine Variable
mlngOldValue deklariert:
Private mlngOldValue As Long
Nun zur BeforeUpdate()-Methode des Kombinationsfeldes:
Private Sub Vendor_BeforeUpdate(Cancel As Integer) ' the comments ... ' ------------------------------------------------------ Dim bolIsActive As Boolean ' to ensure that AfterUpdate() is raised(?!): Cancel = False bolIsActive = [a statement to check status] If bolIsActive Then _ Exit Sub ' everything ok If MsgBox("Really set an inactive vendor?" _ , vbQuestion + vbYesNo + vbDefaultButton2 _ , "<Title>") = vbNo Then ' reset to old value: Me.Vendor = IIf(mlngOldValue = 0, Null, mlngOldValue) End If End Sub
Das führt zu folgender Fehlermeldung:
Laufzeitfehler '2115': Das Makro oder die Funktion [...] hindert [...] daran, die Daten im Feld zu speichern.
Blöd! Bei stackoverflow habe ich unter dem Titel BeforeUpdate problem - Runtime error 2115 die folgende, an sich eindeutige Antwort gefunden:
"You have to put that code in the AfterUpdate event of that field." (Zitatende)
Meine konkreten Fragen:
- Gibt es nicht auch einen Workaround für das BeforeUpdate-Event, wenn ebenUndo() nicht korrekt funktioniert?
- Falls denn die Antwort von stackoverflow so korrekt ist, ist das beforeUpdate-Event praktisch überflüssig, oder?
- Gibt es einen (Hot-)Fix für das Problem?
Access 2013 muss ich gelegentlich noch testen ...
Herzlichen Dank in jedem Fall vorab für eure geschätzten Antworten!