我在打开更新查询的分割表单上有一个按钮,该更新查询更新我的表的随机ID字段,然后通过随机ID对表进行排序。它用“Rnd([ID])* Rnd(Now())”更新字段,使得看起来是足够随机的值。它似乎工作得很好,直到我意识到错在哪里。返回相同的一系列随机值
每次打开Access,加载数据库表单,然后单击按钮,我会得到相同的一系列随机值。第一次点击按钮时,例如,顶部的项目是项目X,随机ID已被设置为1.53779983520508E-05。如果再次点击它,项目Y现在位于顶部,其随机ID为9.06816168821933E-08。第三次,项目Z在顶部,随机ID为1.8881419094896E-08。
我可以一直按下按钮,并获得全新的订单和数字,这很适合我。问题是当我不得不重新打开数据库时。
无论表格以什么顺序开始,即使我将它恢复为完全使用另一个字段作为排序顺序,当我在打开数据库之后首次单击随机化按钮时,项目X始终位于顶部,始终价值9.06816168821933E-08。在第二次点击时,项目Y与1.53779983520508E-05。第三次点击,项目Z与1.8881419094896E-08。每次连续点击都会返回与上一次在上一次会话中达到该点时相同的一组随机ID值。
我曾尝试增加了随机化按钮RunCode并调用RandomizeFunc(),这是我写的一个这样的功能:
Option Compare Database
-----
Public Function RandomizeFunc()
Randomize
End Function
我明白,只是打电话随机化重置随机种子。但它没有任何区别。值的顺序始终相同。
谁能告诉我我到底在做什么错?
编辑:
这是分配随机ID查询
Assign Random ID
-----
Field: Random ID
Table: Items
Update To: Rnd([ID])*Rnd(Now())*Rnd([ID]*Now())
(我加了一些外来赛第一轮在妄图获取值停止重复...)
这是随机化按钮嵌入的宏看起来像
Randomize : On Click
-----
RunCode
Function Name RandomizeFunc()
OpenQuery
QueryName Assign Random ID
View Datasheet
Data Mode Read Only
SetOrderBy
OrderBy [Random ID]
Control Name
如何使用'Rnd'的代码?并且,何时/何时调用了RandomizeFunc? – user2864740
我添加了来自查询和嵌入式宏的代码 –