2012-08-16 77 views
2

我在Access中工作,我需要創建一個隨機的4位數分隔爲記錄的用戶列表。我的查詢不斷返回每個記錄相同的隨機數。爲Access或SQL中的每條記錄創建一個隨機4位數字?

SELECT 1000 + (1999-1000)*RND() as [PassCodes], 
    stafflistEMAIL.Name, stafflistEMAIL.Description 
FROM stafflistEMAIL; 

如何使這項工作,其他答案我已查看不提供解決方案?

+1

聽起來好像您正在生成PIN碼。有獨特的數字是非常重要的嗎?可以幫助我們知道。 – Smandoli 2012-08-16 17:19:33

+0

隨機數不是唯一的,你知道嗎,是嗎? – Fionnuala 2012-08-16 18:14:05

+1

對於查詢,您可以使用字段運行rand:'Int(1000+(1999-1000)* Rnd([akey]))' – Fionnuala 2012-08-16 18:16:17

回答

1

Repeating random variables in VBA

在致電Rnd,使用Randomize聲明沒有參數與基於系統計時器的種子初始化隨機數生成器。

取決於你的目標有很多,你可以做一些有趣的事情是這樣的:

Right(Cstr(CInt(Len(stafflistEMAIL.Name)*Len(stafflistEMAIL.Description)/1000)),4) 
+0

如果系統計時器的分辨率爲1秒,並且查詢速度比此更快,這是行不通的。您需要確保計時器的打勾速度比收到查詢的速度快。 – djconnel 2012-08-16 17:13:14

+0

如果您正在運行除VBA以外的查詢,我不知道如何執行您想要的操作。我建議你將它轉移到VBA進行良好的控制 - 大概這是一個相當重要的功能。例如,我在想,你希望這些數字是唯一的;所以你需要一種方法來檢查,並且VBA提供你需要的控制。 – Smandoli 2012-08-16 17:13:45

+0

djconnel - 這是一個偉大的觀點。再說一次,這是針對VBA的;如果定時器不變(如果不是隨機的,但我認爲它滿足需要),則增加+1。 – Smandoli 2012-08-16 17:17:17

2

就像一個想法,下面將給出4個隨機字符:

Mid(CreateObject("Scripting.FileSystemObject").GetTempName,4,4) 

例如:

906F 
0818 
25A5 
F200 
918F 
A166 
+0

非常酷的+1 – Smandoli 2012-08-16 20:08:29

相關問題