需要帮助返回ms访问测试库的随机顺序多项选择题答案



我有一个Access2013多项选择题测试Db,它以随机顺序将测试问题返回到表格中。这还可以,但对于每个问题,每次的答案都以相同的顺序显示。此特定Db的每个表都设置为:

tbl测试(当然)

ID(PK)

课程

体积

问题NO

部分

问题

Ans A

Ans B

Ans C

Ans D

正确答案

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

tblRnd_Ques

ID(PK)

课程

体积

问题编号

部分

问题

tblRnd_Ans

ID(PK)

Q_ID(FK)

回答

正确(是/否)

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

我在几个网站上搜索过,寻找实现这一点的方法,包括使用FindNext等。我是VBA的新手,不知道如何让它完成我需要的任务。以下是我用来返回每个问题的代码(感谢stackoverflow之前的帮助):

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

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

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

最新更新