Datensatznummer in ACCESS vergeben

Wer kann mir Auskunft geben, wie ich in einem Access-Bericht eine aufeinanderfolgende Datensatznummer pro Datensatz ausdrucken lassen kann, die unabhängig vom Datensatz ist (also keine ID-Nr.)

Hallo!

Schau mal unter http://www.donkarl.com unter dem Punkt „TAbfragen“. Dort findet sich der folgende Tip („FORTLAUFENDE NUMMER IN ABFRAGEN“)und noch ein paar Hinweise dazu.

RowNum: (Select Count (*) FROM [Artikel] as Temp WHERE [Temp].[ID] [Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Ergänzend zu Claudios Antwort siehe auch mein Posting (die Frage wurde schon mal gestellt):

http://wer-weiss-was.de/cgi-bin/forum/showarchive.fp…

Meine Lösung ist etwas schneller bei Massendaten, hat aber den dort erwähnten Nachteil.

Gruß

J.

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Ich konnte José’s folgenden Hinweis nicht öffnen:

http://wer-weiss-was.de/cgi-bin/forum/sho

Mir wurde der Bentzerfehler mitgeteilt, dass die Cookies deaktiviert sein sollen, was aber nicht stimmt.

Olaf

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Ich konnte José’s folgenden Hinweis nicht
öffnen:

Hi Olaf,
weiß der Geier, warum. Hier ist der Inhalt des Artikels:

: Hi Leute,
:
: ich hab da mal eine - vielleicht ganz
: triviale - Frage:
Die ist unter Access überhaupt nicht trivial.

Ich hatte das mal mit einer VBA-Funktion gelöst:

Public Function Zeilennr(Optional ein As Long = 0) As Long
Static n As Long
If ein = 0 Then
n = 0
End If
n = n + 1
Zeilennr = n
End Function

: Und kann man innerhalb der Abfrage schon
: darauf zugreifen? Z.B., moechte ich nur
: Datensaetze mit Nummer 50 - 75 (abhaengig
: von der Seitenzahl eines
: Formulars/Berichts), also Bedingung mit
: „zwischen“.

Innerhalb Deiner Abfrage kannst Du folgendermaßen zugreifen:

SELECT Tabelle1.Feld1, Tabelle1.Feld2, Zeilennr(0) AS Nix, Zeilennr([Tabelle1.feld1]) AS Zeile
FROM Tabelle1
WHERE Zeilennr([Tabelle1.feld1]) Between 20 And 30
ORDER BY Tabelle1.Feld1;

Der Trick ist der: Access erkennt beim ersten Aufruf (Zeilennr(0)), daß die 0 eine Konstante ist, und führt diesen nur einmal für die gesamte
Abfrage durch; beim zweiten Aufruf (Zeilennr([Tabelle1.feld1])) erkennt es, daß ein Datensatzbezug vorhanden ist, und führt die Funktion
entsprechend aus.

Das Ganze hat einen Haken: ORDER BY wird NACH dem Aufruf durchgeführt, d.h. am besten funktioniert das, wenn Feld1 ein AutoWert ist.

HTH
Gruß
J.