<%@ Language=VBScript %> Контрольное тестирование <% If Session("conn") = "0" Then ConnectionString = "DSN=tests;DBQ=C:\InetPub\wwwroot\sources\zonna\test.mdb;DriverId=25;FIL=MS Access;MaxBufferSize=2048;PageTimeout=5;providerName=System.Data.Odbc" Set objConn = server.createobject("ADODB.Connection") objConn.Open(ConnectionString) Session("conn") = "1" Session("allq") = "0" Session("allr") = "0" Session("count5") = "0" 'objRS(0) 'количество вопросов, заданных из каждой таблицы 'строки заданных вопросов для каждой таблицы Session("strq5") = "" strQuery = "SELECT tablecount FROM kontrol" strQuery = strQuery & " WHERE id_theme= 5" Set objRS = objConn.Execute(strQuery) Session("coun") = objRS(0) 'число повторений цикла для подсчета числа вопросов Else ConnectionString = "DSN=tests;DBQ=C:\InetPub\wwwroot\sources\zonna\test.mdb;DriverId=25;FIL=MS 'Access;MaxBufferSize=2048;PageTimeout=5;providerName=System.Data.Odbc" Set objConn = server.createobject("ADODB.Connection") objConn.Open(ConnectionString) End if Session("page") = "kontrol_5.asp" vsego1 = Session("coun") 'всего вопросов vsego = Session("allq") 'уже задано vsego1=cint(vsego1) vsego=cint(vsego) '---------------------------------------------------------------------------------- if vsego1 > vsego then 'если количество заданных вопросов меньше их числа в таблице контрол? vsego нужно уменьшать quetable = 5 tablename = "questions5" '----------------------------выбор номера вопроса из уже выбранной таблицы sto1 = "true" while sto1 strQuery = "SELECT Count(*) FROM "& tablename Set countt = objConn.Execute(strQuery) vsevopr = countt(0) vsevopr = cint(vsevopr) Session("coun") = cint(Session("coun")) if vsevopr < Session("coun") then session("coun") = vsevopr randomize numque = int(Rnd() * vsevopr + 1) 'проверяемый номер вопроса '-------------------------------------------------------- flag="0" numque = cint(numque) if numque < 10 then numque = "0" & numque end if 'организовать проверку вопроса. Вначале выбрать таблицу, затем как обычно: из тестингов strq = Session("strq5") for j=0 to vsego1-1 tek = mid (strq, j*3 +1 , 3) tek = trim(tek) 'Response.Write "

tek" & j & " : x" & tek & "x

" numque = Cstr(numque) tek = CStr(tek) if numque = tek then flag="1" 'tek = cint(tek) 'Response.Write "

Флаг:" & flag & "

" end if next 'добавление вопросов к соответствующей строке вопросов, после проверки вопроса на вшивость if flag = "0" then sto1 = "false" Session("strq5") = Session("strq5")&" "&numque end if 'Response.Write "

строка вопросов" & Session("strq5") & "

" wend '-------------------------------------------------задание вопроса из нужной таблицы tablename с нужным номером numque strQuery = "SELECT * FROM " & tablename strQuery = strQuery & " WHERE id_quest= " & numque Set objRS = objConn.Execute(strQuery) If objRS.EOF Then Response.Write "В базе данных нет записей." Else que = objRS(1) an1 = objRS(2) an2 = objRS(3) an3 = objRS(4) an4 = objRS(5) an5 = objRS(6) Session("ran") = objRS(7) 'верный ответ End If %>

<%= session("allq")+1 %>. <%= que %>

<% if an1<>"" then %> <%= an1 %>
<% end if if an2<>"" then %> <%= an2 %>
<% end if if an3<>"" then %> <%= an3 %>
<% end if if an4<>"" then %> <%= an4 %>
<% end if if an5<>"" then %> <%= an5 %>
<% end if %>

<% '----------------------------------------- else 'вопросы кончились session("mark")=round(session("allr")*5/session("allq")) if session("mark")<2 Then session("mark") = "2" End If Response.Write "Верных ответов:        " & session("allr") & "

" Response.Write "Всего вопросов:        " & session("allq") & "

" Response.Write "Ваша оценка:            " & session("mark") & "

" Session("allq") = "0" Session("allr") = "0" Session("conn") = "0" %>
На главную страницу                
<% end if 'Закрытие подключения. objConn.Close %>