Tipps "n" Tricks
Anwender-Software - Access

Last Update: 24. Dezember 2001/Webmaster

Sicherheitsabfragen in Formularen

Thema:

Access 97, 2000, 2002
Problem: Ich möchte gerne in einem Formular beim Löschen von Datensätzen eine eigene Sicherheitsabfrage anzeigen und beantworten lassen. Der Anwender muss darüber informiert werden, dass ausser dem aktuellen Satz noch dazugehörige Detaildaten gelöscht werden. Kann ich die Access-interne Meldung irgendwie ergänzen oder sogar durch eine eigene Meldung ersetzen?
Lösung: Ein Formular verfügt über die Ereignisprozeduren "Beim Löschen", "Vor Löschbestätigung" und "Nach Löschbestätigung", in denen Sie beliebige eigene Abfragen einbinden können. Die Ereignis-Prozeduren verfügen über einen Parameter "Cancel", den Access nach Aufruf der Prozedur prüft. Steht "Cancel" auf "True", so bricht Access den Löschvorgang ab. Sie können hier also eine kleine Meldung über "MsgBox" anzeigen. und das Ergebnis auswerten. Klickt der Anwender auf "Nein", wird der Parameter "Cancel" entsprechend gesetzt, so dass Access keine Löschung vornimmt. Stellen Sie dazu die Eigenschaft "Vor Löschbestätigung" auf den Eintrag "[Ereignisprozedur]" und klicken Sie dann auf die Schaltfläche mit den drei kleinen Punkten dahinter, um den VBA-Editor zu öffnen. Hier geben Sie nun folgende Anweisungen ein:

Sub Form_BeforeDelConfirm (Cancel As Integer, _
                           Response As Integer)
  Dim R As Variant

  Beep
  R = MsgBox("Datensatz mit allen Detaildaten löschen?", _
             vbYesNo + vbQuestion, "Löschen:")
  If R = vbNo Then
    Cancel = True 'Nicht löschen
    Exit Sub
  End If

    'Hier eventuell eigene Anweisungen, die im Falle
    'einer Löschung zusätzlich ausgeführt werden müssen...

End Sub


Diese kleine Routine zeigt die Frage "Datensatz mit allen Detaildaten löschen?" mit einer "Ja"- und einer "Nein"-Schaltfläche an. Das Ergebnis, also die Nummer der angeklickten Schaltfläche, wird der Variablen "R" zugewiesen. Ist auf die Schaltfläche "Nein" geklickt worden, so setzen wir "Cancel" auf "True" und verlassen die Prozedur. Andernfalls läuft die Routine weiter durch, "Cancel" bleibt auf "False" stehen und Access löscht den Datensatz. In der Meldung können Sie nun zusätzliche spezifische Hinweise wie beispielsweise "Bitte daran denken, die Kundenadresse auch in der Datenbank 'XYZ' zu löschen!" oder ähnlich unterbringen oder die Routine um eigene Anweisungen erweitern, die ggf. im Falle einer Löschung ausgeführt werden sollen.

 

Tipps "n" Tricks
Anwender-Software - Access