Immer wieder erhalte ich die Frage, ob und wie man den Autowert anpassen kann – beispielsweise, um diesen bei einem bestimmten Nummernkreis beginnen zu lassen, sagen wir bei 1200001. Zusätzlich sollen die Werte dann natürlich auch noch durchnummeriert sein. Also schauen wir uns in diesem Artikel einmal an, welche Möglichkeiten wir haben und ob dies überhaupt sinnvoll ist.
Beispieldatenbank
Die Beispiele dieses Artikels finden Sie in der Datenbank 1802_AutowertFestlegen.accdb.
Standard-Autowert
Wenn Sie einer Tabelle ein Autowert-Feld hinzufügen, können Sie zwei Einstellungen für die Eigenschaft Neue Werte vornehmen: Inkrement und Zufall. Dort findet sich nicht etwa eine Einstellung, mit der Sie den Startwert oder das Inkrement selbst festlegen können (siehe Bild 1).
Bild 1: Zwei Varianten für den Autowert
Die Einstellung Zufall ist für unsere Zwecke gar nicht geeignet, also begnügen wir uns vorerst mit Inkrement. Damit erhalten wir, wie nicht anders zu erwarten, ein Autowert-Feld, dass mit dem Wert 1 initialisiert wird (siehe Bild 2).
Bild 2: Normales Verhalten des Autowertfeldes
Autowert per Code hochsetzen
Die erste Möglichkeit, den Autowert hochzusetzen, ist per Code. Sie erstellen einfach so viele Datensätze, bis die gewünschte Zahl erreicht ist:
Public Sub AutowertHochsetzen() Dim db As DAO.Database Dim l As Long Set db = CurrentDb For l = 1 To 100000 db.Execute "INSERT INTO tblAutowerte(Wert) VALUES('')", dbFailOnError Next l db.Execute "DELETE FROM tblAutowerte", dbFailOnError End Sub
Das dauerte bei 100.000 Datensätzen auf dem Testsystem allerdings schon knapp eine Minute. Das Ergebnis überzeugt allerdings. Man muss nur schauen, dass man nicht zuviele Datensätze hinzufügt – dann war die Arbeit umsonst (siehe Bild 3).
Bild 3: Hochsetzen des Autowerts per Code
Autowert direkt setzen
Es geht allerdings auch noch einfacher – und vor allem schneller. Dabei setzen Sie den Autowert einfach manuell! Das gelingt allerdings nicht in der Datenblattansicht, denn dort wird der Autowert immer vom System vergeben. Aber wenn Sie die INSERT INTO-Anweisung nutzen, können Sie den Wert für ein Autowert-Feld selbst festlegen. Die erledigen Sie dann etwa wie folgt:
Public Sub AutowertPerINSERTINTO() Dim db As DAO.Database Set db = CurrentDb db.Execute "INSERT INTO tblAutowerte(AutowertID, Wert) VALUES(1000000, 'Test')", dbFailOnError End Sub
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: