我想知道在使用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]);