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.