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.