Probleme mit Primärschlüsseln und Autowert

Wenn Sie ein Abonnement des Magazins 'Access im Unternehmen' besitzen, können Sie sich anmelden und den kompletten Artikel lesen.
Anderenfalls können Sie das Abonnement hier im Shop erwerben.

Probleme mit Primärschlüsseln und Autowert

Primärschlüsselfelder mit Autowert-Funktion bieten eine komfortable Möglichkeit, für neue Datensätze automatisch einen neuen, eindeutigen Primärschlüsselwert zu vergeben. Wenn man zwischendurch keine Datensätze löscht, ist diese Nummerierung sogar lückenlos. Allerdings kann es sein, dass jemand versucht, gelöschte Datensätze mit den fehlenden Primärschlüsselwerten zu ersetzen. Zu welchen Problemen dies führt und wie Sie diese lösen, zeigt der vorliegende Beitrag.

Autowert-Primärschlüsselfelder

Fast alle Tabellen verwenden ein Primärschlüsselfeld, das über die Autowert-Funktion mit einem neuen, noch nicht vergebenen Wert gefüllt wird (s. Bild 1).

Entwurf einer Tabelle mit Autowert-Primärschlüsselfeld

Bild 1: Entwurf einer Tabelle mit Autowert-Primärschlüsselfeld

Mit dem Felddatentyp Autowert legt man automatisch die Eigenschaft Neue Werte auf Inkrement fest, was bedeutet, dass als Primärschlüsselwert beim Neuanlegen von Datensätzen standardmäßig der Primärschlüsselwert des zuletzt angelegten Datensatzes herangezogen und um eins erhöht wird.

Damit ist eine kleine Stolperfalle verbunden, denn dies funktioniert nur, wenn Sie den neuen Datensatz über die Tabelle oder ein an die Tabelle gebundenes Formular eingeben oder dies per VBA erledigen, wobei hier der Primärschlüsselwert explizit nicht festgelegt werden darf, sondern vom System erzeugt werden muss.

Dies erreichen Sie beispielsweise durch folgende kleine Prozedur, die Sie in einem Standardmodul anlegen und per F5 ausführen:

Public Sub NeuerArtikelMitAutowert()
     Dim db As DAO.Database
     Set db = CurrentDb
     db.Execute "INSERT INTO tblArtikel(Artikelname)  VALUES('Beispielartikel')", dbFailOnError
End Sub

Der Autowert wird hier automatisch auf den zuletzt vergebenen Wert plus eins festgelegt.

Die folgende Variante (siehe Prozedur NeuerArtikel_MitVorgegebenemPK im Modul mdlBeispiele) verwendet die folgende INSERT INTO-Anweisung:

Dies war die Leseprobe dieses Artikels.
Melden Sie sich an, um auf den vollständigen Artikel zuzugreifen.

Bitte geben Sie die Zeichenfolge in das nachfolgende Textfeld ein

Die mit einem * markierten Felder sind Pflichtfelder.

Neues aus unseren Magazinen
Listenfeld: Reihenfolge mehrerer Einträge...

Wir haben bereits in mehreren Beiträgen beschrieben, wie Sie die individuelle Reihenfolge von Elementen einer Tabelle über den Inhalt eines Feldes etwa namens »ReihenfolgeID« einstellen können –... [mehr]

Diagramme mit gefilterten Daten

In Ausgabe 2/2019 haben wir in zwei Artikeln die modernen Diagramme von Access vorgestellt. Im vorliegenen Beitrag zeigen wir Ihnen, wie Sie diese abhängig von den in einem Formular angezeigten... [mehr]

Benutzerverwaltung mit verschlüsselten...

Wenn Sie in einer Access-Anwendung Benutzer verwalten wollen, die sich per Benutzername und Kennwort an die Anwendung anmelden, sollten Sie sehr sensibel mit den in der Anwendung gespeicherten... [mehr]

HTML-Tabellen mit fester Kopfzeile

In den vorherigen Ausgaben von Access im Unternehmen und in der aktuellen Ausgabe arbeiten wir in einigen Beiträgen mit dem Webbrowser-Steuerelement und stellen Daten, die wir mit den Bordmitteln... [mehr]

Flexible HTML-Tabellen mit fester Kopfzeile

Im Beitrag »HTML-Tabellen mit fester Kopfzeile« haben wir gezeigt, wie Sie Daten aus einer bestimmten Abfrage in einem Webbrowser-Steuerelement so anzeigen, dass die Spaltenköpfe oben fixiert... [mehr]

Berechtigungen per HTML verwalten

Im Beitrag »Benutzerverwaltung mit verschlüsselten Kennwörtern« stellen wir eine Lösung vor, in der wir die Berechtigungen von Benutzergruppen an Datenbankobjekten definieren. Dort benötigen wir... [mehr]

Benutzer und Berechtigungen ermitteln

In den Beiträgen »Benutzerverwaltung mit verschlüsselten Kennwörtern« und »Berechtigungen per HTML verwalten« haben wir die Voraussetzungen für eine Benutzerverwaltung geschaffen. Im vorliegenden... [mehr]

Zugriffsrechte mit Datenmakros

Es gibt verschiedene Möglichkeiten, auf Basis des aktuell angemeldeten Benutzers sicherzustellen, dass dieser nur die für ihn vorgesehenen Aktionen mit Daten durchführen darf – beispielsweise durch... [mehr]

Kennwörter generieren

Für den einen oder anderen Zweck möchten Sie vielleicht Kennwörter generieren oder in einer Benutzeroberfläche die Möglichkeit zum Generieren von Kennwörtern anbieten. Wenn Sie etwa Benutzer zu... [mehr]

Neuer Datensatz von Frontend zu Backend

Für manche Themen gibt es keine kurze, prägnante Überschrift. In diesem Fall wollen wir zeigen, wie Sie einen neuen Datensatz anlegen, der in einer temporären Tabelle im Frontend gespeichert wird,... [mehr]