将MS Access连接到VS2017项目后,如何从MS Access中选择随机记录?



我想知道在使用Visual Studio 2017中的"连接到数据库"工具后,是否有办法选择随机记录。我正在尝试选择 1 到 21 之间的随机记录。MS 访问数据库具有 QNumber(主键)、问题、答案 1、答案 2、答案 3 和答案 4。QNumber是一个数字,而其他都是文本。

我尝试从官方Microsoft站点使用此代码。

Dim MyValue As Integer
MyValue = Int((6 * Rnd) + 1)    ' Generate random value between 1 and 6. 

但是,我不确定如何将其应用于我的情况。

自从使用"连接到数据库"工具以来,我使用此代码插入 MS Access 数据库中的数据以填充我的文本框:

txtQNumber.DataBindings.Add("Text", QuizDataSet, "Quiz.QNumber")
txtQ.DataBindings.Add("Text", QuizDataSet, "Quiz.Question")
txtAnswer.DataBindings.Add("Text", QuizDataSet, "Quiz.Answer1")
txtAnswer2.DataBindings.Add("Text", QuizDataSet, "Quiz.Answer2")
txtAnswer3.DataBindings.Add("Text", QuizDataSet, "Quiz.Answer3")
txtAnswer4.DataBindings.Add("Text", QuizDataSet, "Quiz.Answer4")

下面的代码显示了我在回答 10 个问题后为停止测验所做的工作。带有"BindingContext.."的位是单击前进按钮后问题的进展。

Answered = 0
Private Sub cmdForward_Click(sender As Object, e As EventArgs) Handles cmdForward.Click
BindingContext(QuizDataSet, "Quiz").Position = BindingContext(QuizDataSet, "Quiz").Position + 1
Answered = Answered + 1
If Answered = 10 Then
End
End If 

到目前为止,文本框的输出是非常线性的 - 它从 QNumber 1 开始,移动到 QNumber 2,依此类推,然后转到 QNumber 10。我希望它是随机的。例如,它从 QNumber 15 开始,移动到 QNumber 6,然后在 QNumber 19 或类似的东西上结束。

我假设我将不得不使用.位置,事先显示,但同样,我不太确定,所以任何帮助将不胜感激。

您可以修改 SQL 查询以包含每条记录的伪随机值:

Select *, Rnd(-Timer() * [ID]) As RandomNumber 
From YourTable

其中 ID 是主键。然后按随机数排序。

或者,您可以让查询排序:

Select *
From YourTable
Order By Rnd(-Timer() * [ID]);

最新更新