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

问题描述 投票:1回答:1

我想知道在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或类似的东西结束。

我会假设我必须使用.Position,事先显示,但是,我不是很确定,所以任何帮助都会非常感激。

vb.net ms-access random visual-studio-2017
1个回答
0
投票

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

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

其中ID是主键。然后按RandomNumber排序。

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

Select *
From YourTable
Order By Rnd(-Timer() * [ID]);
© www.soinside.com 2019 - 2024. All rights reserved.