Home > Artikel > Ausgabe 2/2018 > Autowert festlegen

Autowert festlegen

Achtung: Sie sind nicht angemeldet. Wenn Sie Abonnent sind und sich anmelden, lesen Sie den kompletten Artikel, laden das PDF herunter oder probieren die Beispieldatenbank aus (sofern vorhanden).

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

Zwei Varianten für den Autowert

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

Normales Verhalten des Autowertfeldes

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

Hochsetzen des Autowerts per Code

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

Das Ergebnis sehen Sie in Bild 4. Der Datensatz enthält genau den vorgegebenen Autowert!

Einstellen des Autowerts mit INSERT INTO

Bild 4: Einstellen des Autowerts mit INSERT INTO

Autowert per Parameter

Dies wandeln wir in eine Prozedur um, der wir die gewünschten Werte flexibel übergeben können.

Diese sieht wie in Listing 1 aus und erwartet die folgenden drei Parameter:

Public Sub AutowertEinstellen(strTabelle As String, strAutowertfeld As String, lngStartwert As Long)

     Dim db As DAO.Database

Sie haben das Ende des frei verfügbaren Teil dieses Artikels erreicht!

Wenn Sie mehr lesen und auf viele weitere Artikel zugreifen möchten, melden Sie sich als Abonnent unter Login an. Falls nicht, bestellen Sie doch einfach ein Jahresabonnement!