Hallo!
> Ich habe gestern die Beschreibung bei ASP Heute gefunden, wie man ganz
> einfach Datens�tze nach zuf�lliger Reihenfolge ausgeben kann.
>
> M�glichkeit 1: Mit NEWID() AS zufall ............ ORDER BY zufall
>
> M�glichkeit 2: Mit RND(Date()) AS zufall ............ ORDER BY zufall

"NEWID()" und "RAND()" sind Transact-SQL-Funktionen, die also nur im
SQL-Server verf�gbar sind. JET-SQL ist weitaus weniger �ppig
ausgestattet; es gibt keine entsprechenden Funktionen.

Work-Around:

1.
Ab Access 2002 / MDAC 2.6(?) kann man SQL-Server-Kompatibilit�t
einstellen. Statt JET-SQL kommt dann ANSI-SQL zum Einsatz. Hier gibt es
zumindest die Funktion "RND()". Das ist die einfachste L�sung. Wenn aber
die Zufallszahl immer f�r alle Datens�tze in der Datenbank erzeugt
werden muss, ist das nicht immer performant.

2. (1 zuf�lliger Datensatz)
Zun�chst mit
   select count(*), min(id), max(id) from ...
die "Rahmenbedingingen" abfragen und dann selber in VBScript
Zufallswerte erzeugen und einen Datensatz mit "top 1" und "where id >
..." lesen.

3. (n zuf�llige Datens�tze)
Zun�chst erzeugt man in VB die geforderte Anzahl von Zufallszahlen
entsprechend den "Rahmenbedingungen" wie unter 2. Dann liest man die
dazu geh�renden Datens�tze mit "top 1" und "where id > ..." und
verkn�pft diese �ber "union" zu einem einzigen Recordset.

Die L�sungen mit VBScript sind bei gro�en Datenmengen performanter, weil
ja die Datenbankengine nur die geforderte Anzahl Datens�tze lesen muss.


Freundliche Gr��e
Joachim van de Bruck



| [aspdedatabase] als [email protected] subscribed
| http://www.aspgerman.com/archiv/aspdedatabase/ = Listenarchiv
| Sie k�nnen sich unter folgender URL an- und abmelden:
| http://www.aspgerman.com/aspgerman/listen/anmelden/aspdedatabase.asp

Antwort per Email an