Autowertfelder verwendet man, um sich keine Sorgen mehr um die automatisch vergebenen Werte für Primärschlüsselfelder machen zu müssen. Manchmal geraten die Werte dieser Felder allerdings aus dem Takt oder Sie möchten selbst festlegen, welchen Wert der nächste Datensatz erhalten soll. Dieser Beitrag zeigt, wie Sie die Autowerte in Ihren Tabellen im Griff haben.
Die meisten Tabellen in Access-Datenbanken (und auch in anderen Datenbanksystemen) verwenden einen automatisch hochzählenden Wert in den Primärschlüsselfeldern. Unter Access stellen Sie dazu einfach den Eintrag Autowert als Felddatentyp ein. Legen Sie dann einen neuen Datensatz an, ermittelt Access für das Autowertfeld den größten bisher vergebenen Wert in diesem Feld und addiert eins hinzu.
Der größte bisher vergebene Wert muss dabei aber nicht der größte Wert sein, den die Tabelle anzeigt. Wenn Sie einer Tabelle einen Datensatz hinzufügen, der im Autowertfeld den Wert 2 erhält und Sie löschen diesen Wert anschließend wieder, wird der nächste neue Datensatz dennoch mit dem Wert 3 versehen (siehe Bild 1).
Bild 1: Wurde der neueste Datensatz gelöscht, wird die ID nicht nochmals vergeben.
Wenn Sie möchten, dass nach dem Löschen des neuesten Datensatzes mit der ID 2 der nächste neue Datensatz wieder den Wert 2 erhält, können Sie die Datenbank komprimieren. Dann wird die Information, welche ID zuletzt vergeben wurde, zurückgesetzt.
Sie sollten das Design des Datenmodells jedoch so wählen, dass es nicht nötig ist, den Primärschlüsselwert mit bestimmten Werten zu füllen – dieser sollte nur zur eindeutigen Kennzeichnung eines Datensatzes dienen und um über Fremdschlüsselfelder Beziehungen zwischen Tabellen herzustellen.
Datensatz mit bestimmtem Primärschlüsselwert unter DAO anlegen
Gelegentlich kann es jedoch dazu kommen, dass ein Datensatz einen bestimmten Primärschlüsselwert erhalten soll. Beim Hinzufügen von Datensätzen über die Benutzeroberfläche können Sie dies nicht beeinflussen. Dazu benötigen Sie eine INSERT INTO-Abfrage, welche nicht nur die Werte der übrigen Felder, sondern auch den Wert für das Primärschlüsselfeld übergibt. Wenn Sie im Beispiel aus dem Screenshot einen Datensatz mit der Nummer 2 anlegen wollen, benötigen Sie die folgende Abfrage:
INSERT INTO tblKunden(KundeID, Vorname, Nachname) VALUES(2, 'Hermann', 'Meier')
Diese Abfrage führen Sie beispielsweise als Parameter der Execute-Methode des Database-Objekts aus:
Public Sub BeispielAutowert() Dim db As DAO.Database Set db = CurrentDb db.Execute "INSERT INTO tblKunden( KundeID, Vorname, Nachname) VALUES(2, 'Hermann', 'Meier')", dbFailOnError End Sub
Hier ist jedoch zu beachten, dass Access sich nun den Wert für das Autowertfeld als den zuletzt vergebenen Wert merkt – auch wenn zuvor bereits größere Werte angelegt wurden. Das heißt, es könnte ein Wert wie 3 als neuer Autowert angelegt werden, obwohl es schon einen Datensatz mit dem Wert 5 im Primärschlüsselwertfeld gibt (siehe Bild 2).
Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...
den kompletten Artikel im PDF-Format mit Beispieldatenbank
diesen und alle anderen Artikel mit dem Jahresabo