Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: Salvation am Mai 25, 2011, 11:37:04

Titel: [ACC2010] Mausrad aktiviere + Änderungen speichern
Beitrag von: Salvation am Mai 25, 2011, 11:37:04
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


Titel: Re: [ACC2010] Mausrad aktiviere + Änderungen speichern
Beitrag von: DF6GL am Mai 25, 2011, 11:52:20
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
Titel: Re: [ACC2010] Mausrad aktiviere + Änderungen speichern
Beitrag von: Salvation am Mai 25, 2011, 12:07:06
Hi,

passt. Funktioniert.

Vielen lieben Dank!

Salvation