【问题标题】:How to randomly select multiple choice questions from Access database如何从Access数据库中随机选择多项选择题
【发布时间】:2015-01-26 15:03:53
【问题描述】:

我有一个包含大约 30 个问题的 Access 数据库。数据库分为3个表;问题,可能的答案和答案。 这些问题有 2 到 5 个可能的答案。 如何从我的数据库中随机选择 10 个问题并将它们添加到我的 vb 表单中?

PS:这是我第一次这样做

这是我的代码

Dim provider As String Dim dataFile As String Dim connString As String Public myConnection As OleDbConnection = New OleDbConnection Public dr As OleDbDataReader

Private Sub Form1_Load(sender As Object, e As System.EventArgs) Handles Me.Load
    provider = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source ="
    dataFile = "C:\Users\Phil\Desktop\Questions.accdb"
    connString = provider & dataFile
    myConnection.ConnectionString = connString
    myConnection.Open()
    Dim str As String
    str = "SELECT Top 10 ID_Question From Questions ORDER BY RND(ID_Question)"
    Dim cmd As OleDbCommand = New OleDbCommand(str, myConnection)
    dr = cmd.ExecuteReader

  While dr.Read()
        TextBox1.Text = dr("ID_Question").ToString
  End While
    myConnection.Close()
    MsgBox("fsafa")
End Sub

Textbox 没有改变,msgBox 没有显示


如果有人感兴趣,对我有用的解决方案

SELECT Top 10 ID_Question, Question_Name 
FROM tblQuestions 
ORDER BY RND(-(100000*ID_Question)*Time())

【问题讨论】:

  • Answer 不需要存在 - 它只需是正确的 PossibleAnswer 条目上的标志。您可以加载问题 ID,将它们随机播放,然后选择前 N 个问题
  • 这可能会有所帮助:stackoverflow.com/questions/9937222/… 但这一切都取决于您的问题所在(获取数据或显示数据)。
  • 你需要某种关系;问题的答案/可能的答案来完成这个......所以即使你选择随机问题,你仍然需要有某种关系才能获得其他细节。
  • 谢谢,如果您知道我的问题,请告诉我,我已经更新了我的问题

标签: database vb.net visual-studio-2010 ms-access multiple-choice


【解决方案1】:

我必须假设您的问题具有自动编号字段,您的可能答案具有基于该自动编号字段的一对多联接,并且您的答案具有基于该自动编号字段的一对一联接?这将是关联表格的最佳方式。

如果是这样,请尝试以下操作:

SELECT Top 10 Question_ID FROM tblQuestions ORDER BY RND(Question_ID)

这应该会为您提供前 10 个随机选择的 Question_ID(或您在上面提到的自动编号字段),然后您可以根据该 ID 离开加入问题/可能的答案/答案表。您只需根据上述 SQL 填充表单或子表单即可显示问题。

【讨论】:

  • 感谢您的回答。我已将其放入我的代码中,但仍有一些不对劲的地方。我已经编辑了我的问题。如果您能看到我的错误,请告诉我。
  • 在我的代码中,我使用 SQLDataReader 而不是 OLEDbDataReader,我不确定这是否会有所不同。然后,就在这之后,我使用“if (dr.HasRows)”来确保我的阅读器中确实有数据。在那里休息一下,看看发生了什么。
  • 如果不行,你也可以试试the solution presented here
  • 这个解决方案也在使用 OLEDbDataReader 我应该使用哪个?
  • @phil652 - 我在另一个网站上被转移了,几天没有检查这个问题(我回答了很多......),只是看到你给了我复选标记。我很好奇你是否能够弄清楚,如果是的话,你做了什么?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-10-24
  • 1970-01-01
  • 2014-02-01
  • 1970-01-01
  • 2023-03-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多