Meldungen bei Datensatzänderungen

Lies diesen Artikel und viele weitere mit einem kostenlosen, einwöchigen Testzugang.

Access bietet einige Sicherheitsmaßnahmen, um den Benutzer vor unbewussten und nicht wiederherstellbaren änderungen von Daten zu schützen. Dabei erscheinen zu bestimmten Gelegenheiten wie etwa vor dem Löschen von Datensätzen entsprechende Warnmeldungen. Das kann auch geschehen, wenn der Benutzer Daten durch den Aufruf von VBA-Anweisungen löschen will oder dies per Aktionsabfrage erledigt. Dieser Artikel zeigt, wo Access eingreift und wie Sie das Verhalten für Ihre Zwecke anpassen können.

Beispieldatenbank

Die Beispiele dieses Artikels finden Sie in der Datenbank 1705_MeldungenBeiDatensatzaenderungen.accdb.

Wo tauchen Warnmeldungen auf

Als Erstes sehen wir uns an, wo überhaupt Warnmeldungen auftauchen, wenn der Benutzer Datensatzänderungen durchführt.

Dies bereits in der Datenblattansicht einer Tabelle der Fall. Versuchen Sie hier, einen Datensatz zu löschen, erscheint die Meldung aus Bild 1. Diese taucht auf, nachdem der zu löschende Datensatz bereits verschwunden ist. Klicken Sie hier auf Nein, wird der Datensatz wiederhergestellt.

Meldung beim manuellen Löschen aus der Datenblattansicht

Bild 1: Meldung beim manuellen Löschen aus der Datenblattansicht

Die gleiche Meldung erscheint auch bei allen weiteren Datenblattansichten, also etwa von Abfragen oder in Formularen.

Die zweite Gelegenheit zum Anzeigen von Meldungen ist das Ausführen von Aktionsabfragen wie zum Beispiel die Abfrage zum Löschen von Daten aus Bild 2. Auch hier bewirkt ein Klick auf Ja, dass die Abfrage tatsächlich ausgeführt wird und Nein, dass die Daten erhalten bleiben.

Meldung beim Löschen per Aktionsabfrage

Bild 2: Meldung beim Löschen per Aktionsabfrage

Nächste Gelegenheit ist das Löschen von Datensätzen über DAO, und zwar mit der Delete-Methode für den aktuell im Recordset markierten Datensatz.

Folgende Prozedur öffnet ein Recordset auf Basis der Tabelle tblBestelldetails, bewegt den Datensatzzeiger zum ersten und wieder zum ersten Datensatz, damit rst.RecordCount die korrekte Anzahl Datensätze ausgibt, löscht dann den aktuellen Datensatz und gibt erneut die Anzahl der Datensätze aus:

Public Sub LoeschenMitDAO_I()
    Dim db As DAO.Database
    Dim rst As DAO.Recordset
    Set db = CurrentDb
    Set rst = db.OpenRecordset("SELECT * FROM                       tblBestelldetails", dbOpenDynaset)
    rst.MoveLast
    rst.MoveFirst
    Debug.Print rst.RecordCount
    If Not rst.EOF Then
        'ersten Datensatz löschen
        rst.Delete
    End If
    Debug.Print rst.RecordCount
End Sub

Im Direktbereich können Sie ablesen, dass genau ein Datensatz gelöscht wurde – wobei allerdings diesmal keine Meldung mit einer Rückfrage an den Benutzer ausgegeben wurde.

Aktionen im Recordset führen also direkt zum Löschen des Datensatzes.

Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...

Testzugang

eine Woche kostenlosen Zugriff auf diesen und mehr als 1.000 weitere Artikel

diesen und alle anderen Artikel mit dem Jahresabo

Schreibe einen Kommentar