2016-11-07 3 views
2

일부 학생들은 액세스를 사용하여 작은 퀴즈를 만들었습니다. 나는 데이터베이스를 분할했다. 학생들이 퀴즈에 참가할 12 개의 터미널이 있습니다. 나는 각 터미널에 프론트 엔드를두고 백엔드는 모든 터미널에 연결된 네트워크 드라이브에 저장됩니다. 이제 퀴즈는 20 개의 무작위로 객관식 질문을 선택합니다. 쿼리가 정상입니다. 학생들이 자신의 터미널에서 자신의 데이터베이스 세션을 시작할 때 모두 똑같은 무작위 질문을하게됩니다. 이것은 그들이 모두 그들의 어깨 너머로 볼 수있는 것처럼 퀴즈를주는 목적을 이깁니다. 왜 이런 일이 일어나는지 모르겠습니다. 데이터베이스가 무작위 질문 쿼리의 결과를 저장했으며 예상 한대로 매번 쿼리를 실행하지 않는 것으로 보입니다. 또한 어떤 이유로 데이터베이스가 매우 느립니다. 기억이 추락하고있는 것 같아요. 나는 무엇을해야합니까?Access 데이터베이스에서 임의의 숫자로 된 쿼리에 대해 동일한 결과가 생성됩니다.

SELECT TOP 20 MCQuestionsT.QuestionID, MCQuestionsT.QuestionText, MCQuestionsT.QuestionImage, MCQuestionsT.ChoiceA, MCQuestionsT.ChoiceB, MCQuestionsT.ChoiceC, MCQuestionsT.ChoiceD, MCQuestionsT.ChoiceE 
FROM MCQuestionsT 
WHERE (((MCQuestionsT.CourseCode)="2323")) 
ORDER BY Rnd(MCQuestionsT.QuestionID); 
+1

는 당신이 우리를 보여 무작위로 질문 코드가 있습니까 여기

쿼리입니까? – dbmitch

+0

20 개의 임의의 질문을 응용 프로그램에서 어떻게 선택합니까? 실제로 어떤 일이 일어나는지 보여줄 수있는 코드를 게시 할 수 있습니까? 또한 일반적으로 SQL Server 또는 다른 서버 기반 데이터베이스 기술을 사용하는 것에 대해 더 빨리 생각하고 싶은 경우 여러 사용자가 사용할 때 Access 데이터베이스의 속도가 느려집니다. –

+0

그 코드입니다. 이 코드는 MCQuestions 테이블에서 임의의 질문을 선택하여 항상 작동합니다. 그러나 이제 학생들이 20 개의 질문을 포함하는 양식 바로 앞에 프런트 엔드 양식을 실행할 때 쿼리는 모든 단일 터미널에서 동일한 20 개의 질문을 제공하는 것으로 보입니다. I –

답변

1

당신은 임의의 발전기 더 시드가 :

SELECT TOP 20 
    MCQuestionsT.QuestionID, MCQuestionsT.QuestionText, MCQuestionsT.QuestionImage, MCQuestionsT.ChoiceA, MCQuestionsT.ChoiceB, MCQuestionsT.ChoiceC, MCQuestionsT.ChoiceD, MCQuestionsT.ChoiceE 
FROM 
    MCQuestionsT 
WHERE 
    CourseCode="2323" 
ORDER BY 
    Rnd(-Timer()*[QuestionID]); 
+0

이것은 작동하는 것 같습니다. 하지만 어떻게해야할지 모르겠다. 그러나 한 경우에 두 개의 다른 터미널에서 동일한 퀴즈를 생성했습니다. 나는 동시에 양쪽 터미널에서 퀴즈를 풀 것을 동료에게 요청했다. 그는 두 터미널에서 가능한 한 가깝게 퀴즈를 시작했습니다. 그것은 가능한가요, 그것은 무작위 질문 생성기가 두 터미널 모두에 대해 동일한 퀴즈를 생성하는 것과 똑같은 순간에 정확히 시작 했습니까? –

+0

예, 가능합니다. 사실 _Rnd_는 고정 된 일련의 의사 랜덤 값을 반환하고 다시 시작합니다. _Randomize_ (그리고 위에있는 특유의 표현식)이하는 일은 시퀀스의 어느 부분을 시작할지 결정하는 것입니다. 즉, 값을 인쇄하고 특정 일련의 값이있는 경우 시퀀스에서 값의 위치를 ​​결정한 후 다음 값을 결정할 수 있습니다. 이것은 물론 무작위가 아니므로 의사 무작위 레이블입니다. 진정한 난수를 얻는 것은 그 자체로 예술입니다. – Gustav

관련 문제