Hallo,
Ausgangslage
Der „BeforeInsert“ Event im Formular wird NICHT abefeuert,
wenn ich unten auf die Formularsteuerung klicke (Pfeil mit
Stern), um einen neuen Record zu erfassen.
Jaaa… das ist auch nicht AddNew. Wenn Du Dir den Code des Buttons anschaust, wirst Du feststellen, daß da ein „DoCmd.GoToRecord , , acNewRec“ ausgeführt wird. Das neue Record wird aber gar nicht erzeugt, sondern erst dann, wenn Du irgend etwas in einem gebundenen Feld eingibst (sichtbar am „Dirty“-Status; ein AutoWert z.B. wird auch erst dann generiert).
Frage1:
Wie fange dieses Ereignis ab?
Müßte mal forschen - gibt es dafür ein Ereignis? Vielleicht funktioniert das so: im BeimAnzeigen-Ereignis (FormCurrent) abfragen, ob ein Feld, das nie null ist, belegt ist - dann ist man offensichtlich im neuen Datensatz, und BeforeInsert wurde nicht ausgelöst. Also Felder setzen. Etwa so:
Private Sub Form\_Current()
If IsNull(Me!MeinAutowert) Then
MeinFeld1 = "Bla"
MeinFeld2 = "Bla"
MeinFeld3 = "Bla"
End If
End Sub
Nachteil liegt auf der Hand:
Du brauchst ein Not-Null-Feld (hast Du aber wahrscheinlich eh).
Frage2:
Wenn nicht möglich, wie sieht der Workaround aus?
Siehe Frage1.
Ich habe es eben ausprobiert, scheint zu laufen!
Gruß
J.