וובמאסטר - תיכנות ובניית אתרים
שאלות ותשובות:
הוסף תשובה

איך שולפים רשומה רנדומלית באקסס?



תגיות: SQL‏  /  Access‏  /  אקסס‏  /  ramdom‏  /  אקראי‏  
הוסף תשובה  |  הוסף הערה
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);


מה שעשינו פה בעצם זה ליצור רנדום בעזרת קצת מתמטיקה [ותודה לטריגו מקרב לב], כיוון שאין פונקציה מוכנה שאקסס מספק לנו [למען האמת יש, אבל היא מגרילה פעם אחת ומחזירה תמיד את אותה התוצאה (-:]

מאמר מעניין בנושא - Randomizing a Recordset
אוריקס, 9/4/2004
הוסף תשובה  |  הוסף הערה
השאילתא הבאה נבדקה על המסד לדוגמא 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);

ניר טייב, 3/11/2004
הוסף תשובה  |  הוסף הערה
הוסף תשובה לשאלה זו:




וובמאסטר © כל הזכויות שמורות