Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Verändern von Datensätzen in einem Ufo - mit Msgbox entscheiden

Begonnen von Andreas Irmer, März 13, 2023, 20:53:08

⏪ vorheriges - nächstes ⏩

Andreas Irmer

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?
Andreas Irmer
für jede Hilfe dankbar und für Tipps zum Thema Wohnmobil, Wohnwagen auch für jeden erreichbar

andyfau

Hallo,

versuche es mal im _BeforeUpdate Ereignis und dann anstatt von Me.Undo mit Cancel = True

Beste Grüße
Andreas
Beste Grüße
Andreas

Andreas Irmer

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?
Andreas Irmer
für jede Hilfe dankbar und für Tipps zum Thema Wohnmobil, Wohnwagen auch für jeden erreichbar

ebs17

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
Mit freundlichem Glück Auf!

Eberhard