Zur Hauptseite ... Zum Onlinearchiv ... Zum Abonnement ... Zum Newsletter ... Zu den Tools ... Zum Impressum ... Zum Login ...

Achtung: Dies ist nicht der vollständige Artikel, sondern nur ein paar Seiten davon. Wenn Sie hier nicht erfahren, was Sie wissen möchten, finden Sie am Ende Informationen darüber, wie Sie den ganzen Artikel lesen können.

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

Gedrucktes Heft

Diesen Beitrag finden Sie in Ausgabe 6/2015.

Unser Angebot für Sie!

Lesen Sie diesen Beitrag und 500 andere sofort im Onlinearchiv, und erhalten Sie alle zwei Monate brandheißes Access-Know-how auf 72 gedruckten Seiten! Plus attraktive Präsente, zum Beispiel das bald erscheinende Buch 'Access 2010 - Das Grundlagenbuch für Entwickler'!

Diesen Beitrag twittern

Individuelle Nummerierungen

Manche Anwendungsfälle erfordern jedoch eine individuelle Nummerierung in einem Feld. Dafür kann es verschiedene Wege geben – zum Beispiel, wenn eine Nummerierung nach einer bestimmten Sortierung eines anderen Feldes erfolgen soll oder nach dem Entfernen oder Hinzufügen von Datensätzen eine neue Nummerierung erforderlich ist. Daher stellen wir in diesem Beitrag Wege vor, um die Nummerierung ganz nach Wunsch zu gestalten.

Gründe für durchnummerierte Felder

In den meisten Fällen ist die Darstellung der Daten Auslöser für den Wunsch nach einer durchgehenden Nummerierung. Dies lässt sich natürlich auch über eine entsprechende Abfrage regeln.

Je nach Datenmenge kostet dies jedoch Performance, und gerade wenn die neu zu nummerierenden Daten selten oder gar nicht mehr geändert werden, ist das Hinzufügen eines Nummerierungsfeldes oder auch die Anpassung des Primärschlüsselfeldes sinnvoll. In allen anderen Fällen sollte die Nummerierung dynamisch per Abfrage erfolgen.

Unabhängig davon, ob Sie nun ein Primärschlüsselfeld oder ein separates Zahlenfeld für die Nummerierung verwenden, sind meist die folgenden zwei Gründe verantwortlich für den Wunsch nach einer neuen Nummerierung:

  • Die Sortierkriterien als Grundlage für die Nummerierung haben sich geändert.
  • Es wurden Datensätze entfernt, sodass die Nummerierung wieder durchgehend gestaltet werden soll.

Ein dritter Grund ist, dass möglicherweise eine Menge aktuell gefilterter Daten nummeriert werden soll. Da dies jedoch meist mehrmals geschieht, sollte man hier grundsätzlich eine dynamische Nummerierung per Abfrage vornehmen.

Primärschlüsselfeld oder zusätzliches Feld nummerieren?

In manchen Fällen soll das Primärschlüsselfeld selbst nummeriert werden. Dies führt erstens dazu, dass man die Aktualisierung der Fremdschlüsselfelder verknüpfter Datensätze für die Beziehung aktivieren muss.

Zweitens muss man sich hier einen kleinen Algorithmus einfallen lassen, da man ja nicht einfach neu nummerieren kann – eine Neunummerierung nach einer anderen Reihenfolge zum Beispiel würde dazu führen, dass ein Datensatz die Nummer 1 erhalten soll, während ein anderer Datensatz, der nach unten sortiert wurde, diesen Wert ebenfalls enthält.

Und in Primärschlüsselfeldern darf nun einmal jeder Wert nur einmal vorkommen. Man müsste in diesem Fall also zunächst den größten Wert für das Primärschlüsselfeld ermitteln und alle Datensätze mit einem Wert im Primärschlüsselfeld füllen, der größer ist als dieser Wert. Erst dann könnte man die Datensätze in der gewünschten Sortierung mit 1 beginnend durchnummerieren.

Deutlich einfacher ist es, wenn Sie für die Nummerierung ein eigenes Feld vorsehen. Dies kostet zwar etwas Speicherplatz, aber das sollte in der heutigen Zeit keine übergeordnete Rolle mehr spielen.

Nummerieren zusätzlicher Felder

Beginnen wir mit den Techniken zum Nummerieren zusätzlicher Felder, die nicht mit einem eindeutigen Index versehen sind (in diesem Fall würde man diese auch erst mit höheren Zahlen nummerieren, bevor man diese beginnend mit dem Wert 1 nummerieren könnte).

Zu Beispielzwecken haben wir der Tabelle tblArtikel ein Feld namens Artikelnummer hinzugefügt, welches wir durchnummerieren wollen (s. Bild 1).

Zusätzliches Feld für eine Nummerierung

Bild 1: Zusätzliches Feld für eine Nummerierung

Die Füllung des Feldes Artikelnummer übernimmt die Prozedur aus Listing 1. Sie öffnet ein Recordset auf Basis der Tabelle tblArtikel, sortiert nach dem Feld ArtikelID.

Public Sub Sortierung()
     Dim db As DAO.Database
     Dim rst As DAO.Recordset
     Dim i As Integer
     Set db = CurrentDb
     Set rst = db.OpenRecordset("SELECT * FROM tblArtikel ORDER BY ArtikelID", dbOpenDynaset)
     Do While Not rst.EOF
         rst.Edit
         i = i + 1
         rst!Artikelnummer = i
         rst.Update
         rst.MoveNext
     Loop
End Sub

Listing 1: Einfache Sortierung im Feld Artikelnummer der Tabelle tblArtikel

Dann durchläuft sie alle Datensätze und erhöht dabei jeweils den Wert der Variablen i, der dann im Feld Artikelnummer landet.

Diese Prozedur lässt sich noch etwas vereinfachen, denn eigentlich benötigen wir die Variable i in diesem Fall gar nicht: Wenn mit dem Wert 1 beginnend durchgehend nummeriert werden soll, können wir dazu auch den Wert der Eigenschaft AbsolutePosition nutzen. Dies liefert die Position des Datensatzzeigers. Da dieser Wert für den ersten Datensatz den Wert 0 enthält, müssen wir nur noch den Wert 1 hinzuaddieren (s. Listing 2).

Sie haben das Ende des frei verfügbaren Teils des Artikels erreicht. Lesen Sie weiter, um zu erfahren, wie Sie den vollständigen Artikel lesen und auf viele hundert weitere Artikel zugreifen können.

Sind Sie Abonnent?Jetzt einloggen ...
 

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

© 2003-2015 André Minhorst Alle Rechte vorbehalten.