Warum noch ein Access-Buch?
Für wen ist das Buch?
Jetzt bestellen
+ direkter Download des eBooks!
Nur EUR 59,95!
Fehler gefunden?
Bitte melden!
Wünsche an das Buch?
Her damit!
Was denken die Leser über dieses Buch?
Lesen Sie aktuelle Rezensionen!
Kapitel des noch nicht veröffentlichten Buchs zum Downloaden, Probelesen und Kommentieren
Beispieldatenbanken
Zusätzliches Material

Das Buch im HTML-Format

Für unbestimmte Zeit bieten Addison-Wesley und André Minhorst den kompletten Inhalt des Buchs als Download an. Schauen Sie rein und informieren Sie sich über den Inhalt! Und wenn Ihnen das Buch nützlich erscheint und Sie glauben, dass Sie etwas gelernt haben oder durch das Gelesene sogar etwas Zeit und somit Geld bei Ihrer Arbeit einsparen konnten, können Sie sich ja beim Autor und beim Verlag revanchieren - beispielsweise durch den Kauf dieses Buchs.

Am schönsten wäre es natürlich, wenn Sie das Buch direkt hier bestellen - Sie erhalten das Buch dann direkt vom Verlag, und der Autor und Verlag haben dann noch mehr davon, als wenn Sie es anderswo kaufen.

Danke für Ihr Interesse!

16.1.3 Abbrechen der Bearbeitung auslagern

16.1.4 Löschen von Datensätzen auslagern

Auch für die Löschen-Schaltfläche legen Sie zunächst eine private Objektvariable an:

Private WithEvents mDeleteButton As CommandButton

Der Löschvorgang soll außerdem eine benutzerdefinierte Rückfrage verwenden können. Diese wird in folgender Variablen gespeichert:

Private mDeleteMessage As String

Die weitere Vorgehensweise ist ein wenig aufwändiger als bei den vorherigen Schaltflächen. Bereits die Property Set-Prozedur legt im Formular neben der Ereigniseigenschaft für die Schaltfläche eine weitere Ereigniseigenschaft für das Formular selbst an:

Public Property Set DeleteButton(cmd As CommandButton)

    'Referenz auf die Löschen-Schaltfläche setzen
    Set mDeleteButton = cmd

    'Ereigniseigenschaft für die Schaltfläche anlegen
    mDeleteButton.OnClick = "[Event Procedure]"

    'Ereigniseigenschaft "Beim Löschen" für das Formular anlegen
    mForm.OnDelete = "[Event Procedure]"

End Property

Listing 16.10: Das Löschen eines Datensatzes erfordert zwei Ereigniseigenschaften

Natürlich ist auch für die Variable mDeleteMessage für die je nach Formular individuelle Rückfrage eine Property Let-Prozedur zum Einstellen der Eigenschaft vorzusehen:

Public Property Let DeleteMessage(strDeleteMessage As String)
    mDeleteMessage = strDeleteMessage
End Property

Listing 16.11: Property Let-Eigenschaft für die Lösch-Rückfrage

Die erste Ereigniseigenschaft wird beim Klicken auf die Löschen-Schaltfläche ausgelöst. Die entsprechende Ereignisprozedur sieht folgendermaßen aus:

Private Sub mDeleteButton_Click()

    On Error GoTo mDeleteButton_Click_Err

    With DoCmd
        'Systemmeldungen ausschalten
        .SetWarnings False
        'Aktuellen Datensatz löschen
        .RunCommand acCmdDeleteRecord
        'Systemmeldungen wieder einschalten
        .SetWarnings True
    End With

mDeleteButton_Click_Exit:
    Exit Sub

mDeleteButton_Click_Err:
    If Err.Number = 2501 Then
        'Dieser Fehler tritt beim Abbrechen eines durch die
        'Docmd.RunCommand accmdDeleteRecord ausgelösten Löschvorgangs
        'auf. Er soll nicht behandelt werden.
    Else
        MsgBox "Fehler: " & Err.Description & vbCrLf & "Fehlernummer: " _
            & Err.Number, vbOKOnly + vbCritical, "Fehler"
    End If

    Resume mDeleteButton_Click_Exit

End Sub

Listing 16.12: Ereignisprozedur beim Löschen eines Datensatzes per Schaltfläche

Diese zweite Ereigniseigenschaft wird immer beim Löschen eines Datensatzes ausgelöst, etwa durch Betätigen der Entfernen-Taste. Sie kann beispielsweise Code für die Anzeige einer Rückfrage vor dem Löschen in Form eines Meldungsfensters enthalten.

Private Sub mForm_Delete(Cancel As Integer)

    Dim strDeleteMessage As String

    'Prüfen, ob individuelle Rückfrage vorhanden ist
    If Len(mDeleteMessage)> 0 Then
        'Falls ja, diese verwenden...
        strDeleteMessage = mDeleteMessage
    Else
        '... oder die Standardmeldung anzeigen.
        strDeleteMessage = "Soll der aktuelle Datensatz gelöscht werden?"
    End If

    'Rückfrage, ob der Datensatz wirklich gelöscht werden soll
    If MsgBox(strDeleteMessage, vbYesNo + vbExclamation + _
        vbDefaultButton1, _
        "Datensatz löschen") = vbCancel Then
        'Falls nein, Abbruch einleiten
        Cancel = True
    End If

End Sub

Listing 16.13: Diese Prozedur wird bei allen Löschvorgängen aufgerufen

In der Prozedur aus Listing 16.13 kommt nun auch die Variable mDeleteMessage zum Zuge. Sie kann genau wie die anderen Elemente über die entsprechende Property Set-Prozedur von der Beim Öffnen-Prozedur des Formulars eingestellt werden. Zum Einstellen der beiden neuen Member der Klasse clsFormCode fügen Sie in der Beim Öffnen-Prozedur die folgenden beiden Codezeilen ein:

Set objFormCode.DeleteButton = Me.cmdLoeschen
objFormCode.DeleteMessage = "Möchten Sie diesen Kontakt löschen?"

Nächster Abschnitt:

16.1.5 Hinzufügen von Datensätzen auslagern

© 2006-2008 André Minhorst Alle Rechte vorbehalten.