目标:我需要一个Access Query来随机生成3位数字,用于为特定日期生成的所有序列号创建唯一的序列号。序列号的一半是通过发货日期生成的,因此对于返回的记录集,3位数值必须是完全唯一的(给定日期最多可以有100条记录)。
要生成随机数,我使用以下函数:
INT((900-100 + 1)*了Rnd()+ 100)
对于查询中返回的第一条记录,此函数会在100到900之间随机生成数字。问题是第一条记录下面的每条记录包含相同的数字,因此为查询中返回的每条记录创建重复的序列号。
我需要的是实现一个增量函数,可以将原始随机生成的数字的值增加1,或者创建语法,告诉Access随机生成数字而没有100-900范围的所有记录返回,而不会出现重复分配号码。
非常感谢您的帮助!
埃里克
你必须种子Rnd。传统的方法是定时器:
=Int((900-100+1)*Rnd(-Timer())+100)
为了禁止欺骗,请记住,随机是随机的,因此唯一的方法是检查之前没有使用过的每个生成的数字 - 如果有,则再次运行该功能。
这意味着,当您接近限制时,将需要越来越多的循环来生成未使用的数字。