Autowerte

Access macht es dem Datenbankprogrammierer bei Anlegen von neuen Datensätzen sehr leicht: Es vergibt, wenn man dies so definiert hat, automatische Werte für bestimmte Felder eines Datensatzes. In der Regel ist dieses Feld identisch mit dem Primärschlüsselfeld, was auch durchaus sinnvoll ist – liefert die Autowert-Funktion von Access doch standardmäßig einen Wert, der um eins größer als der bisher größte Wert ist. Es gibt aber auch andere Einstellungen. Dieser Artikel wirft einen genauen Blick auf Autowerte in Access.

Beispieldatenbank

Die Beispiele dieses Artikels finden Sie in der Datenbank 1312_Autowerte.mdb.

Autowert anlegen

Wer schon ein paar Tabellen unter Access angelegt hat, verwendet diese Funktion wahrscheinlich bereits wie im Schlaf: Sie legen eine neue Tabelle an und fügen zunächst ein Feld hinzu, das als Primärschlüsselfeld dient und somit als Feld mit eindeutigen Werten.

Dies gewährleistet, dass jeder Datensatz zumindest anhand eines Feldes eindeutig identifiziert werden kann.

Damit dieses Feld auch zuverlässig mit einem bisher noch nicht vorhandenen Wert gefüllt wird, gibt es unter Access den Felddatentyp Autowert. Diesen legen Sie für das Primärschlüsselwert fest, in der Beispieldatenbank etwa für das Feld AutowertID der Tabelle tblAutowerte (siehe Bild 1).

Anlegen einer Tabelle mit einem Autowert

Bild 1: Anlegen einer Tabelle mit einem Autowert

Nachdem Sie dies erledigt haben, können Sie zur Datenblattansicht der Tabelle wechseln. Dort finden Sie nicht nur einen leeren Datensatz vor, sondern auch noch den Text (Neu) im Feld AutowertID (siehe Bild 2).

Das Autowert-Feld zeigt den Eintrag (Neu) an.

Bild 2: Das Autowert-Feld zeigt den Eintrag (Neu) an.

Dieser ändert sich auch erst, nachdem Sie das erste Feld des frischen Datensatzes geändert haben. Das Autowert-Feld erhält dann, wenn die Tabelle bis dahin noch jungfräulich war, den Wert 1 (siehe Bild 3).

Er wird eingefügt, sobald der Datensatz geändert wurde.

Bild 3: Er wird eingefügt, sobald der Datensatz geändert wurde.

Dieser Wert ist allerdings, wie der komplette Datensatz, noch nicht in der Tabelle gespeichert – dies geschieht erst, wenn Sie den Datensatz tatsächlich entweder durch einen Mausklick auf den Datensatzmarkierer des betroffenen Datensatzes oder durch Verlassen des geänderten Datensatzes in der zugrunde liegenden Tabelle speichern (siehe Bild 4).

Weitere Datensätze erhalten den bisher größten Wert plus eins als Autowert.

Bild 4: Weitere Datensätze erhalten den bisher größten Wert plus eins als Autowert.

Lückenlos

Dies geht nun so weiter – und wenn Sie keinen Datensatz löschen, erhalten Sie eine wunderschöne lückenlose Reihe von Primärschlüsselwerten (siehe Bild 5).

Schön durchnummerierte Datensätze

Bild 5: Schön durchnummerierte Datensätze

Dummerweise ist es damit vorbei, sobald Sie den ersten Datensatz löschen (siehe Bild 6). Aber was soll man an dieser Stelle sonst erwarten – wohl kaum, dass Access die Nummerierung der nachfolgenden Datensätze so ändert, dass sich die Lücke wieder schließt.

Aber wehe, ein Datensatz wird gelöscht!

Bild 6: Aber wehe, ein Datensatz wird gelöscht!

So mancher mag aber erwarten, dass zumindest der folgende Datensatz einen Autowert erhält, der die lückenlose Nummierung wiederherstellt. Das ist jedoch mitnichten der Fall: Der folgende Autowert orientiert sich brav an dem bisher größten vergebenen Wert und fügt diesem noch den Wert 1 hinzu (siehe Bild 7).

Die entstandene Lücke wird durch einen neuen Datensatz nicht geschlossen.

Bild 7: Die entstandene Lücke wird durch einen neuen Datensatz nicht geschlossen.

Anfügen nach Löschen

Wenn Sie nun den zuletzt angefügten Datensatz löschen, könnten Sie zumindest theoretisch erwarten, dass Access den neuen Datensatz – wie auch die vorherigen Datensätze – wieder mit dem aktuell größten Primärschlüsselwert plus eins versieht.

Das Löschen des letzten und das erneute Anfügen eines Datensatzes liefert allerdings eine Enttäuschung: Der neue Datensatz erhält nicht den Primärschlüsselwert des zuvor gelöschten Datensatzes, sondern den um eins erhöhten Wert (siehe Bild 8).

Nach dem Löschen des letzten Datensatzes wird dessen Autowert nicht neu vergeben.

Bild 8: Nach dem Löschen des letzten Datensatzes wird dessen Autowert nicht neu vergeben.

Tabelle zurücksetzen

Dummerweise geschieht das Gleiche nicht nur, wenn Sie nur ein oder mehrere Datensätze am Ende einer Tabelle löschen, sondern auch dann, wenn Sie alle Datensätze löschen – beispielsweise, um eine bislang mit Testdaten gefüllte Datenbank zu leeren und diese dem Kunden zu übergeben.

Möchten Sie weiterlesen? Dann lösen Sie Ihr Ticket!
Hier geht es zur Bestellung des Jahresabonnements des Magazins Access [basics]:
Zur Bestellung ...
Danach greifen Sie sofort auf alle rund 400 Artikel unseres Angebots zu - auch auf diesen hier!
Oder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein:

Schreibe einen Kommentar