|
|
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. |
|