Dieses Thema ist schon öfter hier behandelt worden und die Antworten haben auch mir zur Lösung verholfen. Im Grunde ist es nicht sehr kompliziert, doch habe ich ein wenig gebraucht, um mir aus verschiedenen Expertenantworten die Lösung zusammen zu reimen.
Deswegen wollte ich hier kurz ein paar Hinweise geben, die anderen Nicht-Experten mit demselben Problem vielleicht hilfreich sind, schneller zur Lösung zu kommen.
Der Text in der Abfrage ist:
LaufNummer: (Select Count (*) FROM [Ausgangstabelle/Abfrage] as Temp WHERE [Temp].[Sortierungs_Id] < [Ausgangstabelle/Abfrage].[Sortierungs_Id])+1
falls gruppiert werden soll (das heißt beim wechselnden Wert einer Spalte neu angefangen werden soll, also 1,2,3,1,2,3):
LaufNummer: (Select Count (*) FROM [Ausgangstabelle/Abfrage] as Temp WHERE [Temp].[Sortierungs_Id] < [Ausgangstabelle/Abfrage].[Sortierungs_Id] AND [Temp].[Gruppierungs_Id]=[Ausgangstabelle/Abfrage].[Gruppierungs_Id])+1
Die "Ausgangstabelle/Abfrage" ist in der Regel die Tabelle oder Abfrage, die der Abfrage zugrunde liegt, in der der Zähler erzeugt werden soll.
Manchmal führt "<=" statt nur "<" bei der "Sortierungs_Id" zum gewünschten Ergebnis. Ich habe mir nicht die Mühe gemacht zu ergründen warum, doch wollte es auf jeden Fall anmerken.
Die Sortierungs_Id muss eine Zahl oder ein Datum sein (sonst funktioniert < nicht), die Gruppierungs_Id kann auch ein Text oder sonstiger Wert sein (= funktioniert immer).
Viele, wie auch ich zunächst, glauben, dass die Ausgangstabelle/Abfrage ja bereits sortiert ist, und der Zähler schon einfach vom ersten bis zum letzten Datensatz 1,2,3, durchnummerieren würde. Doch ist es nicht ganz so simpel.
Ist die Ausgangstabelle/Abfrage nach nur einer Spalte eindeutig sortiert, dann nimmt man einfach diese Spalte als "Sortierungs_Id". Wenn die Ausgangstabelle/Abfrage jedoch nach mehreren Feldern sortiert ist, muss die "Sortierungs_Id" erst erzeugt werden (in der Ausgangsabfrage oder im Text der Formel). Die Sortierungs_Id muss eindeutig (also ohne Duplikate) und eindeutig sortierbar sein (also nur über diese eine Spalte). Sie muss allerdings nicht fortlaufend sein.
Bei zwei oder mehr Sortierungsfeldern mit aufsteigender Zahlen-Id, kann man die Felder einfach addieren, um zu einer solchen Sortierungs_Id zu kommen. Ist eines der Felder absteigend sortiert, kann man sich mit dem Umweg helfen, indem man die Zahl von einer großen Ausgangszahl abzieht (z.B. 10000-Id). Kommt ein Datum ins Spiel, empfiehlt es sich dieses in einen Zahlenwert umzuwandeln.
SortierungA, SortierungB, Sortierungs_Id, Gruppierungs_Id, LaufNummer
5, 55, 60, A, 1
5, 677, 682, A, 2
6, 677, 683, A 3
10, 7777, 7787, B, 1
14, 999999, 1000013, B, 2