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 に答える