שליפה רנדומאלית ברמת ה SQL באקסס הולכת בצורה הבאה [בשביל MySql ו SQLServer יש פתרונות אלגנטיים בהרבה]:
var w=Math.random()*4; var x=Math.random()*10; var y=Math.random()*3; var z=Math.random()*6; sql=""; sql+="SELECT id,* "; sql+="FROM tbl "; sql+="ORDER BY cos("+z+"*(sin(cos(-Sin(tan(sqr(id)*"+y+"))*tan(id)*sin(id*tan(id)))/2*"+x+"*tan(id))))*sin(id*tan(id*cos(id)*cos(id)*Sin(id*tan(id*cos(id)))*tan(90-id*cos(id)*sin(id)))*sin("+w+")*cos(id)) DESC"; rs.Open (sql,Conn);
מה שעשינו פה בעצם זה ליצור רנדום בעזרת קצת מתמטיקה [ותודה לטריגו מקרב לב], כיוון שאין פונקציה מוכנה שאקסס מספק לנו [למען האמת יש, אבל היא מגרילה פעם אחת ומחזירה תמיד את אותה התוצאה (-:]
2 תשובות
אפשר לעשות הכל ברמת ה SQL.
שליפה רנדומאלית ברמת ה SQL באקסס הולכת בצורה הבאה [בשביל MySql ו SQLServer יש פתרונות אלגנטיים בהרבה]:
var w=Math.random()*4;
var x=Math.random()*10;
var y=Math.random()*3;
var z=Math.random()*6;
sql="";
sql+="SELECT id,* ";
sql+="FROM tbl ";
sql+="ORDER BY cos("+z+"*(sin(cos(-Sin(tan(sqr(id)*"+y+"))*tan(id)*sin(id*tan(id)))/2*"+x+"*tan(id))))*sin(id*tan(id*cos(id)*cos(id)*Sin(id*tan(id*cos(id)))*tan(90-id*cos(id)*sin(id)))*sin("+w+")*cos(id)) DESC";
rs.Open (sql,Conn);
מה שעשינו פה בעצם זה ליצור רנדום בעזרת קצת מתמטיקה [ותודה לטריגו מקרב לב], כיוון שאין פונקציה מוכנה שאקסס מספק לנו [למען האמת יש, אבל היא מגרילה פעם אחת ומחזירה תמיד את אותה התוצאה (-:]
מאמר מעניין בנושא –
השאילתא הבאה נבדקה על המסד לדוגמא Northwind ונמצאה עובדת
-> סידור רנדומלי של רשומות
-> לא חוזר על אותם רצפים
VBS:
Randomize()
dim sql
sql = "SELECT Employees.EmployeeID FROM Employees ORDER BY Rnd(-1 *"&rnd()&"*Employees.EmployeeID)"
rs.Open sql, objConn
JS:
var sql;
sql = "SELECT * FROM tbl3 ORDER BY Rnd(-1*"+Math.random()+"*CInt(tbl3.id));";
rs.open (sql,objConn);