【问题标题】:How to get new random rows every time from an MS-Access query?如何每次从 MS-Access 查询中获取新的随机行?
【发布时间】:2017-05-22 11:16:49
【问题描述】:

这是我面临的一个问题由于我有一个大型气象数据数据库,我想通过模型获取随机行来操作。我在ORDER BY 语句中使用了一个带有随机数的列。 以下是我的试验及其缺点:

1- 我尝试使用带有rnd() 函数的列。 它为所有记录返回相同的数字!

2- 我将行号与随机函数组合为:rnd([ID])它为每条记录返回一个新数字,但整个数字集每次都重复!

3- 终于找到了想和大家分享的答案。

向所有人致以最诚挚的问候。

【问题讨论】:

  • IT 世界没有“真正的随机”。只能是伪随机的
  • @J.Doe 我的意思是一组新的随机数。谢谢,我改了标题。

标签: ms-access random vba records


【解决方案1】:

答案是使用 VBA 为每次运行和每条记录生成一个新的随机数。

打开 VBA 编辑器,创建一个新模块,然后粘贴以下代码:

Public Function GenerateRandom(Param As Long) As Double
    Randomize
    GenerateRandom = Rnd(Param)
End Function

然后保存并关闭 VBA 编辑器。

在您的工作中使用GenerateRandom([Id]) 而不是rnd([Id]) 函数。 这可能会慢一些,但会确保 100% 随机化。

希望这会有所帮助...

【讨论】:

  • 您不需要外部函数。有关重复的问题,请参见上面的链接。
  • 亲爱的@Gustav 我回顾了提到的问题,它没有解决我提到的问题,但是,它也使用 VBA。感谢您的贡献。
  • 好吧,请再读一遍。该查询完全解决了您的问题 - 这是一个经典。
猜你喜欢
  • 2012-04-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多