Datensätze hinzufügen/ändern
Grundsätzlich müssen Sie zwischen dem Editieren eines bestehenden und eines neuen Datensatzes unter-
scheiden. In beiden Fällen ist es angebracht, die Eigenschaft Updatable abzufragen. Ist der Rückgabewert
True, können Sie die Datenmenge bearbeiten. Ursache für ein zurückgegebenes False kann zum Beispiel ein
Join in der SQL-Abfrage sein (Dynaset).
Mit der Eigenschaft EditModesst sich prüfen, ob der Datensatz schon in Bearbeitung ist.
Rückgabewert Beschreibung
dbEditNone Der Datensatz ist nicht in Bearbeitung.
dbEditInProgress Der Datensatz ist im Edit-Modus.
dbEditAdd Der Datensatz ist im Append-Modus (noch nicht in die Datenbank eingefügt).
Tabelle 6.16 Eigenschaft EditMode
Wird einer der beiden letzten Werte zurückgegeben, können Sie direkt in die einzelnen Felder schreiben.
Der Ablauf beim Einfügen eines neuen Datensatzes in die Datenbank ist immer der gleiche:
Neuer
Datensatz
Editieren
Datensatz
NEIN
AddNew
Edit
JA
JA
Datensatz editieren
Datensatz
speichern
CancelUpdate
NEIN
Update
JA
Abbildung 6.5 Abläufe beim Bearbeiten von
Datensätzen
Nach dem Aufruf der Methode AddNew können Sie den einzelnen Feldern neue Werte zuweisen. Das gilt
natürlich nur für editierbare Felder, Zählerfelder sind davon definitiv ausgeschlossen. Bis zu einem ab-
schließenden Update bleibt der Datensatz in einem Zwischenpuffer, erst dann erfolgt die Übernahme in die
319
Arbeiten mit Recordsets
BEISPIEL
HINWEIS
Kapitel 6: DAO-Programmierung
Tabelle. Wollen Sie den Anfügevorgang abbrechen, müssen Sie anstatt der Update-Methode die Cancel-
Update-Methode aufrufen.
Soll ein bestehender Datensatz editiert werden, ist er mit der Edit-Methode für die Bearbeitung zu öffnen.
Der weitere Ablauf entspricht dem Vorgehen beim Anfügen von Datensätzen. Die obige Skizze sollte alle
offenen Fragen beantworten
In eine Tabelle
Personen
wird ein neuer Datensatz eingefügt. Anschließend wird dieser Datensatz editiert.
Dim db As Database
Dim tb As Recordset
Öffnen der Tabelle:
Set db = CurrentDb
Set tb = db.OpenRecordset("Personen", dbOpenTable)
Testen, ob die Tabelle editierbar ist:
If Not tb.Updatable Then Exit Sub
Einfügen Datensatz:
tb.AddNew
tb!nachname = "Lehmann"
tb!vorname = "Frieda"
Übernahme in die Datenbank:
tb.Update
Positionieren auf den zuletzt bearbeiteten Datensatz:
tb.Bookmark = tb.LastUpdated
Einschalten des Edit-Mode, verändern des Feldes
Nachname
und Übernahme in die Datenbank:
tb.Edit
tb!nachname = "Schmidt"
tb.Update
Vor der Übernahme prüft die Datenbank-Engine, ob alle Datentypen übereinstimmen und ob die vorgege-
benen Regeln (Validation Rules) beachtet werden. Sollte eine der Bedingungen verletzt werden, tritt ein
auffangbarer Laufzeitfehler auf. Verzichten Sie also nicht auf eine Datenprüfung bzw. eine ordentliche
Fehlerbehandlung.
Für den Multiuser-Zugriff genügen obige Codefragmente bei weitem nicht, Sie müssen vor dem Hinzufügen
abfragen, ob die betreffende Datenbank für Schreibzugriffe überhaupt freigegeben ist. Mehr zum Thema »Multiuser« finden Sie
in Kapitel 9.
320

Get Microsoft Office Access 2007-Programmierung - Das Handbuch now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.