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
