Hi,
ich habe ein kleines Problem. Ich benutze ACC2010 und diese Version braucht, damit man das Mausrad benutzen kann, einen VBA-Code, damit man das Mausrad wieder benutzen kann. Dieser Code muss direkt – so hab ich es zumindest in der Anweisung gelesen – direkt in dem Teil ,,Bei Mausrad" eingetragen werden.
Private Sub Form_MouseWheel(ByVal Page As Boolean, ByVal Count As Long)
Me.Recordset.Move Count / 3
End Sub
Nun möchte ich aber auch, dass Änderungen gespeichert werden, sobald das Mausrad benutzt wird. Okay, gespeichert werden sie scheinbar, aber ich bekomme die Daten, welche bei der Änderung mit eingetragen werden sollen nicht. Sprich die Infos zu WER hat geändert, WANN wurde geändert und an WELCHEN Rechner wurde es geändert. Zudem sollte es eine Anfrage geben, ob Gespeichert werden soll. Diese wird auch nicht gestellt, sondern die eingegebenen Daten werden so gespeichert.
Der Code funktioniert ohne die Mausradporzedur. Woher ich das weiss? Mein ACC ist eine 2003er Version und auf Rechnern mit ACC2003 funktioniert es. Sprich es wurde nur der Teil fürs Mausrad eingebunden, aber nun funktioniert es nicht mehr so, wies sollte.
Private Sub Form_MouseWheel(ByVal Page As Boolean, ByVal Count As Long)
On Error Resume Next
If Me.Dirty Then 'prüft, ob der Datensatz geändert wurde
If MsgBox("Sollen die gemachten Änderungen gespeichert werden ?", vbYesNo, "Speichern?") = vbNo Then
Me.Undo ' rückgängig
Cancel = True ' Ereignisse verhindert
Else
Me!ÄnderungDT = Now
Me!ÄnderungUS = CurrentUser()
Me!ÄnderungPc = fOSMachineName()
End If
End If
End Sub
Zusammen schaut es so aus:
Private Sub Form_MouseWheel(ByVal Page As Boolean, ByVal Count As Long)
On Error Resume Next
Me.Recordset.Move Count / 3
If Me.Dirty Then 'prüft, ob der Datensatz geändert wurde
If MsgBox("Sollen die gemachten Änderungen gespeichert werden ?", vbYesNo, "Speichern?") = vbNo Then
Me.Undo ' rückgängig
Cancel = True ' Ereignisse verhindert
Else
Me!ÄnderungDT = Now
Me!ÄnderungUS = CurrentUser()
Me!ÄnderungPc = fOSMachineName()
End If
End If
End Sub
Ich habs schon mit einem DOEVENTS versucht, aber da auch dasselbe Problem. Es wird gespeichert. Mausrad kann ich nutzen. Aber die Infodaten sowie die Anfrage werden nicht gestellt.
Kann mir vielleicht jemand weiter helfen?
LG Salvation
Hallo,
Es muss das Form_BeforeUpdate-Ereignis für die Ausgabe der MsgBox benutzt werden:
Sub Form_Beforeupdate (Cancel as Integer)
On Error Resume Next
If MsgBox("Sollen die gemachten Änderungen gespeichert werden ?", vbYesNo, "Speichern?") = vbNo Then
Me.Undo ' rückgängig
Cancel = True ' Ereignisse verhindert
Else
Me!ÄnderungDT = Now()
Me!ÄnderungUS = CurrentUser()
Me!ÄnderungPc = fOSMachineName()
End If
End Sub
Hi,
passt. Funktioniert.
Vielen lieben Dank!
Salvation