1

我正在重新编写一个小型 ms-access 应用程序来参加考试。

他们想要的是让测试根据考试的规模来抓取一组随机问题。

如果每门考试都是固定数量的问题,我可以将数字粘贴在TOP语句中并完成它,但是每门考试的问题数量是可变的,所以我想TOP用查询中的字段。

我基本上想要的是这样的:

SELECT TOP tblExam.[ExamSize] * 
FROM tblExamQuestions INNER JOIN tblExam 
ON tblExamQuestions.ExamID = tblExam.ExamID
WHERE tblExam.ExamID = 10
ORDER BY Rnd(tblExamQuestions.ExamQuestionID);

当我打开报告时,我会为每个考试会话提供新ExamID的查询,所以这可能会妨碍。

DoCmd.OpenForm strExamName, , , "tblExam.ExamID = " & strExamID
4

1 回答 1

2

我认为您必须动态构建查询。

 sSQL="SELECT TOP " & DlookUp("ExamSize","tblExam","ExamID = 10") _
     & " FROM tblExamQuestions INNER JOIN tblExam " _
     & "ON tblExamQuestions.ExamID = tblExam.ExamID " _
     & "WHERE tblExam.ExamID = 10 " _
     & "ORDER BY Rnd(tblExamQuestions.ExamQuestionID)"

'' Permanently change an existing query
CurrentDB.QueryDefs("MyReportQuery").SQL=sSQL
于 2010-07-28T19:20:57.880 回答