Access SQL Randomizer无法正常工作

时间:2015-08-14 19:21:38

标签: sql vb.net ms-access oledb oledbcommand

我正在使用下面提到的代码从Access数据库中选择一个记录ID,该记录ID在前一天尚未被选中,并将其添加到数组中。

一般目标是只要在过去2天内没有选择记录之前从未选择记录,就会检索与初始“难度”标准匹配的记录。循环完成后,我应该有x个唯一的记录ID,并将它们添加到数组中以便在其他地方进行处理。

 Private Function RetrieveQuestionID(questionCount As Integer)

    ' We're using this retrieve the question id's from the database that fit our arrangements.
    Dim intQuestArray(0 To questionCount) As Integer
    Dim QuestionConnection As New OleDb.OleDbConnection("PROVIDER=Microsoft.ACE.OLEDB.12.0;Data Source = |DataDirectory|\Database\MillionaireDB.accdb;")

    QuestionConnection.Open()

    For i As Integer = 1 To intNoOfQuestions
        'TODO: If there are no valid questions, pull up any of them that meets the difficulty requirement....

        Dim QuestionConnectionQuery As New OleDb.OleDbCommand("SELECT Questions.QuestionID FROM Questions WHERE (((Questions.QuestionDifficulty)=[?])) AND (((Questions.LastDateRevealed) Is Null)) OR (Questions.LastDateRevealed >= DateAdd('d',-2,Date())) ORDER BY Rnd((Questions.QuestionID) * Time());", QuestionConnection)
        QuestionConnectionQuery.Parameters.AddWithValue("?", intQuestionDifficulty(i - 1).ToString)
        Dim QuestionDataAdapter As New OleDb.OleDbDataAdapter(QuestionConnectionQuery)
        Dim QuestionDataSet As New DataSet

        QuestionDataAdapter.Fill(QuestionDataSet, "Questions")
        intQuestArray(i - 1) = QuestionDataSet.Tables("Questions").Rows(0).Item(0)

        Dim QuestionConnectionUpdateQuery As New OleDb.OleDbCommand("UPDATE Questions SET Questions.LastDateRevealed = NOW() WHERE Questions.QuestionID = [?]", QuestionConnection)
        QuestionConnectionUpdateQuery.Parameters.AddWithValue("?", intQuestArray(i - 1).ToString)
        QuestionConnectionUpdateQuery.ExecuteNonQuery()

    Next

    QuestionConnection.Close()
    Return intQuestArray
End Function

然而,循环遍历数组将显示即使记录在循环期间更新,也会以某种方式重复记录。

是否有另一种循环数据库并提取这些记录的方法?我甚至试图将.Open().Close()语句移到For...Next循环中,并且我的结果比之前更差。

0 个答案:

没有答案
相关问题