Я переписываю небольшое приложение для доступа к MS для сдачи экзаменов.N Выбор верхней записи на основе собственного заявления SQL в 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
N в TOP N нельзя параметризовать. Вам нужно будет написать источник данных во время выполнения. Событие OnOpen формы будет подходящим местом для этого. –
Я закончил с немного уродливым взломом. Я храню размер экзамена в целое число уровня формы с «DLookUp», а затем сохраняю счетчик, который увеличивается с каждым ответом на вопрос, а затем выходит из экзамена после того, как счетчик превышает размер хранимого экзамена. – Nitrodist