首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >需要帮助为ms-access题库返回随机顺序多项选择题答案

需要帮助为ms-access题库返回随机顺序多项选择题答案
EN

Stack Overflow用户
提问于 2017-11-19 01:51:26
回答 1查看 251关注 0票数 0

我有一个Access2013多项选择测试Db,它以随机顺序将测试题返回到表单。这种方法工作正常,但对于提出的每个问题,答案每次都以相同的顺序显示。此特定数据库的每个表设置为:

tblTest (当然)

ID (主键)

课程

问题号

部分

问题

Ans A

答案B

Ans C

Ans D

正确答案

我知道这不是优化的数据,因此无法随机化答案。一些网站建议拆分表格,所以我现在所做的是创建两个独立的表格,如下所示:

tblRnd_Ques

ID (主键)

课程

问题号

部分

问题

tblRnd_Ans

ID (主键)

Q_ID (FK)

回答

正确(Y/N)

然后,我创建了通过随机化tblRnd_Ques.ID和tblRnd_Ans.Q_ID来随机化这两个表的查询,然后创建了一个连接这两个随机查询的查询。我想要做的是让问题显示在表单中,然后在qryRnd_Ans中找到答案,并按照答案在查询中出现的顺序返回答案。需要做的是显示问题,然后搜索记录集以找到下一个相关的答案,并将其作为答案# 2,依此类推。每个问题都有一个唯一的ID号,并在整个记录集中重复4次,得到相应的答案。

我已经在几个网站上寻找了这样做的方法,包括使用FindNext等,我是一个相当的VBA新手,不知道如何让它做我需要的。下面是我用来返回每个问题的代码(感谢前面的stackoverflow的帮助):

代码语言:javascript
复制
Private Sub LoadNextQuestion()   'reusable code to load questions

rcdCnt = rcdCnt + 1

    If (rcdCnt > 100) Or rsCourse.EOF Then
        GetQuestionTotal
        LogTestResults
        DoCmd.OpenReport "rptResults_Test"
        rsCourse.Close
        DoCmd.Close acForm, "frmIntro"
        DoCmd.Close acForm, "frmQues"
        DoCmd.OpenQuery "qryEmptyQuestions"
        DoCmd.OpenQuery "qryEmptyResults"
        DoCmd.CloseDatabase

    Exit Sub
    End If

With rsCourse
    intQues = !ID
    strCDC = !CDC
    intVol = !Vol
    strSect = !Section
    strQues = !Question
    strAns = !Answer
    blnCorr = !Correct

    ctlQ_No = rcdCnt
    ctlQuestion = !Question
    ctlSection = ![Section]

 MsgBox intQues & _
    Chr(13) & Chr(10) & "CDC:  " & strCDC & _

    Chr(13) & Chr(10) & "Volume:  " & intVol & _

    Chr(13) & Chr(10) & "Section:  " & strSect & _

    Chr(13) & Chr(10) & "Q:  " & strQues & _

    Chr(13) & Chr(10) & "A:  " & strAns & _

    Chr(13) & Chr(10) & blnCorr

    ctlAns_A = ![Answer]
'        ctlAns_B = ![Ans B]    (Commented out for testing purposes)

'        ctlAns_C = ![Ans C]    (Commented out for testing purposes)

'        ctlAns_D = ![Ans D]    (Commented out for testing purposes)

    strSect = ctlSection
    strCorrectAnswer = ![Correct]
    optAnswer = Null   'clears previous answer
    optAnswer.SetFocus

    .MoveNext

End With
End Sub

我假设我可能需要一个用于答案的子表单,但不知道如何正确地生成问题和答案。任何我能得到的帮助我都深表感谢。

EN

回答 1

Stack Overflow用户

发布于 2017-11-19 03:56:18

我假定您在查询ORDER BY子句中使用了Rnd()函数。随机化ID上的答案,而不是Q_ID。然后使用子窗体/子报表容器主/子链接来同步记录。我进行了测试,不需要任何VBA。使用报告/子报告排列中的这些表打印调查问卷。看不到在表单/子表单中以随机顺序显示这些表有什么用处。如果要向试题库添加新的问题和答案,而不是用于用户回答,则需要此窗体/子窗体。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47369219

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档