Acc97: Datensätze einer Abfrage durchnummerieren

Hi Leute,

ich hab da mal eine - vielleicht ganz triviale - Frage:

Wie kann man die Datensaetze einer Abfrage gleich durchnummerieren? (Quasi AutoWert beginnend mit 1).

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“.

(VB-Code ist kein Problem)

Danke fuer Hilfe und Anregungen.

MfG
Andreas

Schau mal hier:
http://www.donkarl.com/FAQ/FAQTAbfragen.htm#3.11
Allerdings sind derartige Abfragen mit Vorsicht zu geniessen (man kann z.B. nicht darin blättern…)

Sicherer - wenn auch nicht die reine Lehre des DB-Designs - ist es, einen Datensatzzähler in der zugrundeliegenden Tabelle mitzuführen.

Reinhard

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

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.

ein neues feld erstellen und updaten mit i=i+1
oder mit autowert , start 1 befüllen. Das ergibt die fortlaufenden nummern.
eine abfrage kann dann direkt darauf zugreifen.

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

Hallo Hans,

ein neues feld erstellen und updaten mit
i=i+1
oder mit autowert , start 1 befüllen. Das
ergibt die fortlaufenden nummern.
eine abfrage kann dann direkt darauf
zugreifen.

damit numerierst Du die Datensätze der Tabelle, nicht der Abfrage…

Gruß
J.