Hallo zusammen,
im Unterformular speichere ich Daten zu Montageeinsätzen ab. Manchmal ist es erforderlich dort Daten zu ändern, wenn sich z.B. der Umfang des Auftrags geändert hat.
Der Mitarbeiter, der den Auftrag ausführen soll, ist aber eine Kerninfo und soll nicht ohne weiteres geändert werden. Dazu bringe ich eine MsgBox, wenn ein anderer Mitarbieter ausgewählt wird. Die MsgBox kann mit ja oder nein beantwortet werden. Bei ja, soll der neue Name übernommen werden, bei nein soll der alte Name im Datensetz stehen bleiben.
Ich habe das bisher so gemacht:
Private Sub Mitarbeiter_ID_F_Dirty(Cancel As Integer)
Dim Entscheidung As Integer
If Not IsNull(Me.GeaendertAm) Then
Entscheidung = MsgBox("Bitte nur Änderungen an Mitarbeitereinsätzen ausführen, die in info@autarker.de gespeichert werden. Ansonsten werden die Termine in falschen Kalendern erscheinen. Wirklich fortfahren?", vbYesNo + vbExclamation, "Bitte beachten")
If Entscheidung = 6 Then
Me.GeaendertAm = Now()
Else
Me.Undo
End If
End If
End Sub
Leider funktionert aber das me.undo nicht und der neue Eintrag bleibt darin stehen. Liegt es an der Konstellation eines Ufos im Hafo?
Wo mache ich den Denkfehler?
Hallo,
versuche es mal im _BeforeUpdate Ereignis und dann anstatt von Me.Undo mit Cancel = True
Beste Grüße
Andreas
Hallo Namensvetter,
ich habe das jetzt mal eingetragen aber es funktioniert so noch nicht.
Wenn ich mir den Code ansehe,
Private Sub Mitarbeiter_ID_F_BeforeUpdate(Cancel As Integer)
Dim Entscheidung As Integer
If Not IsNull(Me.GeaendertAm) Then
Entscheidung = MsgBox("Bitte nur Änderungen an Mitarbeitereinsätzen ausführen, die in info@autarker.de gespeichert werden. Ansonsten werden die Termine in falschen Kalendern erscheinen. Wirklich fortfahren?", vbYesNo + vbExclamation, "Bitte beachten")
If Entscheidung = 6 Then
Me.GeaendertAm = Now()
Else
Cancel = True
End If
End If
End Sub
ist Cancel aber auch integer und nicht boolean. Kann es daran liegen?
Wenn ich "alles aktualisieren" klicke, bekomme ich die gleiche Msg-Box noch mal. Wenn ich dann wieder auf nein klicke ist der ursprüngliche Zustand, also der alte Name, wieder im Termin drin.
Das gleiche Verhalten tritt auch auf, wenn ich Cancel = True durch Cancel = 1 ersetze.
Hast Du noch Tipps? Oder sonst jemand?
Ein Speichern findet pro Datensatz statt, nicht bei Einzel-Steuerelementen. Das relevante Ereignis zum unmittelbaren Prüfen vor dem Speichern ist daher das Form_BeforeUpdate.
Davor könnte der Inhalt des Steuerelementes doch zehnmal hin- und hergewechselt werden, was egal ist und nur die Ansicht stört.
Siehe auch beim Klassiker: Rückfrage vor dem Speichern (https://www.donkarl.com?FAQ4.32)