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