Vba 随机6位数字(无重复)MS Access 2010数据库?

Vba 随机6位数字(无重复)MS Access 2010数据库?,vba,ms-access,random,Vba,Ms Access,Random,我有一个数据库,它有一个表单,可以为MS Access数据库中的一组特定信息生成ID。此ID是指当前日期和一个随机的6位数字。目前,我有默认值为=date()的日期字段和默认值为的随机数字段(格式(Rnd()*1000000,'000000'),6)来获取6位数字,然后我使用这个=[DateRequested]&“-”和[RandomNumber]在ID字段中获取字段的串联版本,中间有一个破折号。两者都正常工作,但当我关闭并重新打开数据库时,我得到的数字是相同的。我在这里看到了一些关于在代码中发

我有一个数据库,它有一个表单,可以为MS Access数据库中的一组特定信息生成ID。此ID是指当前日期和一个随机的6位数字。目前,我有默认值为
=date()
的日期字段和默认值为
的随机数字段(格式(Rnd()*1000000,'000000'),6)
来获取6位数字,然后我使用这个
=[DateRequested]&“-”和[RandomNumber]
在ID字段中获取字段的串联版本,中间有一个破折号。两者都正常工作,但当我关闭并重新打开数据库时,我得到的数字是相同的。我在这里看到了一些关于在代码中发出
Randomize
语句的内容,但我不太擅长编写代码,也不知道如何实现这一点

我试着从我可以从线程中组合的东西来做这件事:

Private Sub Form_Load()
Randomize()
End Sub
但我得到了这个错误信息:

编译错误:应为:=


我只需要知道我需要更改什么,以便让数据库在每次打开数据库时提取一个新的6位数字,而不是每次都提取相同的数字集。

从调用中删除括号以进行随机化

我也尝试过,但所有这一切都导致我再次获取相同的数字集。这可能是我放置代码的位置吗?@mw90:你应该在开始生成随机数之前调用Randomize。或者您可以定义一个调用Randomize并返回Rnd()的函数,并调用此函数而不是直接调用Rnd()。第一个选项性能更好,可能是autoexec宏?如果不行,第二种选择应该行得通。我不太清楚你提到的这两件事该怎么办。但是,我想你是说我需要把Rnd()代码放在VB中的随机化代码之后?@mw90:第一个选项,请参阅。从这个宏调用
随机化
。对于第二个选项,将函数
function myRnd()定义为单个函数
。在代码中,调用myRnd()而不是Rnd()。为什么不只是给它加上时间戳呢?用户群是否太大,以至于可能会担心在同一时间单击?如果没有,则
=[DateRequested]&“-”格式(Date,“ddmmyyyyhhnss”)
似乎工作正常,更具描述性。或者,如果DateRequested=日期,则只需使用
=格式(日期,“mm/dd/yyyy HhNnSs”)
即使您要求6位数字,我也建议这样做的原因是您的随机数可能会因偶然情况而重复,除非计算机时间关闭或两个用户同时调用。ID用于取消识别数据,并用于将信息彼此关联。用户群很小,因此同时单击并不是一个真正的问题。但是,我确实需要6位数字。不过我还是尝试了你的代码,它正在生成“12/16/2013日期”。抱歉应该是
Format(Date(),“ddmmyyyhhnss”)
Hmm,这是有意义的。我暂时将其设置为=[DateRequested]&“-”和Format(Now(),“hhnss”),因为它保留了6位格式,并且不会重复日期。Now()函数返回了其他字段,当我刚输入Date()时,所有字段都将显示为00。但我之前没有想过要这么做。我唯一担心的是,如果有人在同一时间输入数据,它可能不是唯一的。是的,但这必须在完全相同的时间发生,并且随机化也会有相同的问题,即可能出现重复,至少这种情况是有意义的。对不起,你是对的,我忘了Date()将时间设置为00:00:00 Now()是正确的。