יום רביעי, 15 באוקטובר 2008

בעיה ברשומות אקראיות של אקסס

היום ניסיתי ליצור רשומת אקראיות בתוכנת אקסס (Ms Access).

ב Sql Server הדבר דיי פשוט, לדוגמא:


Select * from [tbl] order by NEWID()


המשפט האחרון לא עובד באקסס.

באקסס יש לבצע זאת בצורה אחרת:



Select * from [tbl] order by rnd(RecId)


כאשר RecId הוא המפתח הראשי של הטבלה (מספר אוטומטי).


העניין הוא שמשפט ה Select הזה עובד מצוין בתוכנת האקסס אבל לא כשאילתה חיצונית (במקרה שלי, פיתוח ב Asp.Net).

חקרתי ובדקתי (שעות!!) ומצאתי את הפתרון הבא:



Randomize()

Dim int_RandomFactor As Double = Int(1000 * Rnd()) + 1

select * from [tbl] order by Rnd(" & -1 * (int_RandomFactor) & "*ItemId)



עובד מצוין! :-)



בקרו אצלי באתר: פיתוח תוכנה

אין תגובות: