我想知道在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,事先显示,但是,我不是很确定,所以任何帮助都会非常感激。
您可以修改SQL查询以包含每条记录的伪随机值:
Select *, Rnd(-Timer() * [ID]) As RandomNumber
From YourTable
其中ID是主键。然后按RandomNumber排序。
或者,您可以让查询排序:
Select *
From YourTable
Order By Rnd(-Timer() * [ID]);