www.pudn.com > cjg2.rar > frmTesting.frm


VERSION 5.00 
Begin VB.Form DoTest  
   BorderStyle     =   1  'Fixed Single 
   Caption         =   "Form1" 
   ClientHeight    =   6435 
   ClientLeft      =   45 
   ClientTop       =   330 
   ClientWidth     =   9975 
   ControlBox      =   0   'False 
   LinkTopic       =   "Form1" 
   MaxButton       =   0   'False 
   MinButton       =   0   'False 
   ScaleHeight     =   6435 
   ScaleWidth      =   9975 
   StartUpPosition =   3  '窗口缺省 
   Begin VB.CommandButton cmdEsc  
      Cancel          =   -1  'True 
      Caption         =   "放弃" 
      Height          =   300 
      Left            =   8055 
      TabIndex        =   38 
      Top             =   5610 
      Width           =   870 
   End 
   Begin VB.CommandButton cmdSubmit  
      Caption         =   "交卷" 
      Height          =   300 
      Left            =   6945 
      TabIndex        =   37 
      Top             =   5602 
      Width           =   870 
   End 
   Begin VB.PictureBox picNavigation  
      AutoSize        =   -1  'True 
      BorderStyle     =   0  'None 
      Height          =   360 
      Left            =   914 
      ScaleHeight     =   360 
      ScaleWidth      =   4980 
      TabIndex        =   31 
      Top             =   5962 
      Width           =   4980 
      Begin VB.ComboBox cmbType  
         Height          =   300 
         ItemData        =   "frmTesting.frx":0000 
         Left            =   1814 
         List            =   "frmTesting.frx":0010 
         TabIndex        =   43 
         Text            =   "cmbType" 
         Top             =   30 
         Width           =   1350 
      End 
      Begin VB.CommandButton cmdMove  
         Caption         =   "后一题" 
         Height          =   300 
         Index           =   2 
         Left            =   3186 
         Style           =   1  'Graphical 
         TabIndex        =   35 
         Top             =   15 
         Width           =   870 
      End 
      Begin VB.CommandButton cmdMove  
         Caption         =   "末尾题" 
         Height          =   300 
         Index           =   3 
         Left            =   4080 
         Style           =   1  'Graphical 
         TabIndex        =   34 
         Top             =   15 
         Width           =   870 
      End 
      Begin VB.CommandButton cmdMove  
         Caption         =   "第一题" 
         Height          =   300 
         Index           =   0 
         Left            =   30 
         Style           =   1  'Graphical 
         TabIndex        =   33 
         Top             =   15 
         Width           =   870 
      End 
      Begin VB.CommandButton cmdMove  
         Caption         =   "前一题" 
         Height          =   300 
         Index           =   1 
         Left            =   922 
         Style           =   1  'Graphical 
         TabIndex        =   32 
         Top             =   15 
         Width           =   870 
      End 
   End 
   Begin VB.TextBox txtTest  
      Height          =   5505 
      Left            =   532 
      MultiLine       =   -1  'True 
      ScrollBars      =   2  'Vertical 
      TabIndex        =   0 
      Text            =   "frmTesting.frx":003C 
      Top             =   397 
      Width           =   5745 
   End 
   Begin VB.Frame frmAnswer  
      Caption         =   "程序填空题答案" 
      Height          =   3480 
      Index           =   3 
      Left            =   6435 
      TabIndex        =   22 
      Top             =   397 
      Width           =   2985 
      Begin VB.TextBox txtBlank  
         Height          =   270 
         Index           =   3 
         Left            =   300 
         TabIndex        =   30 
         Top             =   2400 
         Width           =   2505 
      End 
      Begin VB.TextBox txtBlank  
         Height          =   270 
         Index           =   2 
         Left            =   300 
         TabIndex        =   28 
         Top             =   1825 
         Width           =   2505 
      End 
      Begin VB.TextBox txtBlank  
         Height          =   270 
         Index           =   1 
         Left            =   300 
         TabIndex        =   26 
         Top             =   1251 
         Width           =   2505 
      End 
      Begin VB.TextBox txtBlank  
         Height          =   270 
         Index           =   0 
         Left            =   300 
         TabIndex        =   24 
         Top             =   677 
         Width           =   2505 
      End 
      Begin VB.Label lblBlank  
         AutoSize        =   -1  'True 
         Caption         =   "第4空" 
         Height          =   180 
         Index           =   3 
         Left            =   300 
         TabIndex        =   29 
         Top             =   2205 
         Width           =   450 
      End 
      Begin VB.Label lblBlank  
         AutoSize        =   -1  'True 
         Caption         =   "第3空" 
         Height          =   180 
         Index           =   2 
         Left            =   300 
         TabIndex        =   27 
         Top             =   1635 
         Width           =   450 
      End 
      Begin VB.Label lblBlank  
         AutoSize        =   -1  'True 
         Caption         =   "第2空" 
         Height          =   180 
         Index           =   1 
         Left            =   300 
         TabIndex        =   25 
         Top             =   1035 
         Width           =   450 
      End 
      Begin VB.Label lblBlank  
         AutoSize        =   -1  'True 
         Caption         =   "第1空" 
         Height          =   180 
         Index           =   0 
         Left            =   300 
         TabIndex        =   23 
         Top             =   465 
         Width           =   450 
      End 
   End 
   Begin VB.Frame frmAnswer  
      Caption         =   "程序阅读题答案" 
      Height          =   3480 
      Index           =   2 
      Left            =   6435 
      TabIndex        =   10 
      Top             =   397 
      Width           =   2985 
      Begin VB.Frame frmDivPR  
         Caption         =   "小题(3)" 
         Height          =   705 
         Index           =   2 
         Left            =   180 
         TabIndex        =   17 
         Top             =   2265 
         Width           =   2625 
         Begin VB.OptionButton optPR3  
            Caption         =   "A" 
            Height          =   210 
            Index           =   0 
            Left            =   330 
            TabIndex        =   21 
            Top             =   315 
            Width           =   405 
         End 
         Begin VB.OptionButton optPR3  
            Caption         =   "B" 
            Height          =   210 
            Index           =   1 
            Left            =   810 
            TabIndex        =   20 
            Top             =   315 
            Width           =   405 
         End 
         Begin VB.OptionButton optPR3  
            Caption         =   "C" 
            Height          =   210 
            Index           =   2 
            Left            =   1305 
            TabIndex        =   19 
            Top             =   315 
            Width           =   405 
         End 
         Begin VB.OptionButton optPR3  
            Caption         =   "D" 
            Height          =   210 
            Index           =   3 
            Left            =   1785 
            TabIndex        =   18 
            Top             =   315 
            Width           =   405 
         End 
      End 
      Begin VB.Frame frmDivPR  
         Caption         =   "小题(2)" 
         Height          =   705 
         Index           =   1 
         Left            =   180 
         TabIndex        =   16 
         Top             =   1380 
         Width           =   2625 
         Begin VB.OptionButton optPR2  
            Caption         =   "D" 
            Height          =   210 
            Index           =   3 
            Left            =   1830 
            TabIndex        =   42 
            Top             =   375 
            Width           =   405 
         End 
         Begin VB.OptionButton optPR2  
            Caption         =   "C" 
            Height          =   210 
            Index           =   2 
            Left            =   1365 
            TabIndex        =   41 
            Top             =   375 
            Width           =   405 
         End 
         Begin VB.OptionButton optPR2  
            Caption         =   "B" 
            Height          =   210 
            Index           =   1 
            Left            =   900 
            TabIndex        =   40 
            Top             =   375 
            Width           =   405 
         End 
         Begin VB.OptionButton optPR2  
            Caption         =   "A" 
            Height          =   210 
            Index           =   0 
            Left            =   390 
            TabIndex        =   39 
            Top             =   375 
            Width           =   405 
         End 
      End 
      Begin VB.Frame frmDivPR  
         Caption         =   "小题(1)" 
         Height          =   705 
         Index           =   0 
         Left            =   180 
         TabIndex        =   11 
         Top             =   495 
         Width           =   2625 
         Begin VB.OptionButton optPR1  
            Caption         =   "D" 
            Height          =   210 
            Index           =   3 
            Left            =   1785 
            TabIndex        =   15 
            Top             =   315 
            Width           =   405 
         End 
         Begin VB.OptionButton optPR1  
            Caption         =   "C" 
            Height          =   210 
            Index           =   2 
            Left            =   1320 
            TabIndex        =   14 
            Top             =   315 
            Width           =   405 
         End 
         Begin VB.OptionButton optPR1  
            Caption         =   "B" 
            Height          =   210 
            Index           =   1 
            Left            =   810 
            TabIndex        =   13 
            Top             =   315 
            Width           =   405 
         End 
         Begin VB.OptionButton optPR1  
            Caption         =   "A" 
            Height          =   210 
            Index           =   0 
            Left            =   345 
            TabIndex        =   12 
            Top             =   315 
            Width           =   405 
         End 
      End 
   End 
   Begin VB.Frame frmAnswer  
      Caption         =   "单项选择题答案" 
      Height          =   3480 
      Index           =   1 
      Left            =   6435 
      TabIndex        =   5 
      Top             =   397 
      Width           =   2985 
      Begin VB.OptionButton optSO  
         Caption         =   "D" 
         Height          =   285 
         Index           =   3 
         Left            =   585 
         TabIndex        =   9 
         Top             =   1335 
         Width           =   735 
      End 
      Begin VB.OptionButton optSO  
         Caption         =   "C" 
         Height          =   285 
         Index           =   2 
         Left            =   585 
         TabIndex        =   8 
         Top             =   1010 
         Width           =   735 
      End 
      Begin VB.OptionButton optSO  
         Caption         =   "A" 
         Height          =   285 
         Index           =   0 
         Left            =   570 
         TabIndex        =   7 
         Top             =   360 
         Width           =   735 
      End 
      Begin VB.OptionButton optSO  
         Caption         =   "B" 
         Height          =   285 
         Index           =   1 
         Left            =   585 
         TabIndex        =   6 
         Top             =   685 
         Width           =   735 
      End 
   End 
   Begin VB.Frame frmAnswer  
      Caption         =   "判断题答案" 
      Height          =   3480 
      Index           =   0 
      Left            =   6435 
      TabIndex        =   2 
      Top             =   397 
      Width           =   2985 
      Begin VB.OptionButton optYesNo  
         Caption         =   "错误" 
         Height          =   285 
         Index           =   1 
         Left            =   585 
         TabIndex        =   4 
         Top             =   690 
         Width           =   735 
      End 
      Begin VB.OptionButton optYesNo  
         Caption         =   "正确" 
         Height          =   285 
         Index           =   0 
         Left            =   585 
         TabIndex        =   3 
         Top             =   360 
         Width           =   735 
      End 
   End 
   Begin VB.Label lblNews  
      AutoSize        =   -1  'True 
      Caption         =   "Label5" 
      Height          =   180 
      Left            =   6450 
      TabIndex        =   36 
      Top             =   4035 
      Width           =   540 
   End 
   Begin VB.Label lblType  
      AutoSize        =   -1  'True 
      Caption         =   "Label1" 
      BeginProperty Font  
         Name            =   "宋体" 
         Size            =   10.5 
         Charset         =   134 
         Weight          =   700 
         Underline       =   0   'False 
         Italic          =   0   'False 
         Strikethrough   =   0   'False 
      EndProperty 
      Height          =   210 
      Left            =   532 
      TabIndex        =   1 
      Top             =   112 
      Width           =   720 
   End 
End 
Attribute VB_Name = "DoTest" 
Attribute VB_GlobalNameSpace = False 
Attribute VB_Creatable = False 
Attribute VB_PredeclaredId = True 
Attribute VB_Exposed = False 
Option Explicit 
Option Base 1                       '定义数组下标从1开始 
Dim objTest As Recordset            '用于保存考试记录数据 
Dim objJudge As Recordset           '用于保存判断题题库数据 
Dim objSelOne As Recordset          '用于保存选择题题库数据 
Dim objProRead As Recordset         '用于保存程序阅读题题库数据 
Dim objProFill As Recordset         '用于保存程序填空题题库数据 
Dim objCn As Connection             '用于建立数据库连接 
Dim strTest() As String             '用于表存学生答题信息 
Dim iJ%, iSO%, iPR%, iPF%, iTotal%  '用于保存小题数和总题数 
 
Private Sub cmbType_Click() 
    '显示对应题型的第小题 
    Select Case cmbType.ListIndex 
        Case 0 
            '显示判断题第一小题 
            cmdMove(0).Value = True     '使第一条记录成为当前记录 
        Case 1 
            '显示选择题第一小题 
            cmdMove(0).Value = True     '使第一条记录成为当前记录 
            objTest.Move iJ - 1         '使最后一道判断题成为当前记录 
            cmdMove(2).Value = True     '使第一道选择题成为当前记录 
        Case 2 
            '显示程序阅读题第一小题 
            cmdMove(0).Value = True     '使第一条记录成为当前记录 
            objTest.Move iJ + iSO - 1   '使最后一道选择题成为当前记录 
            cmdMove(2).Value = True     '使第一道程序阅读题成为当前记录 
        Case 3 
            '显示程序填空第一小题 
            cmdMove(0).Value = True                '使第一条记录成为当前记录 
            objTest.Move iJ + iSO + iPR - 1        '使最后一道程序阅读题成为当前记录 
            cmdMove(2).Value = True                '使第一道程序填空题成为当前记录 
    End Select 
End Sub 
 
Private Sub cmdEsc_Click() 
    If MsgBox("真的放弃本次考试码?", vbQuestion + vbYesNo, _ 
            "Basic自测考试") = vbYes Then 
        Unload Me 
        End  '结束程序运行 
    End If 
End Sub 
 
Private Sub cmdSubmit_Click() 
    On Error Resume Next 
    Dim strA$, strB$, strC$, strD$, i%, strSQL$ 
    If MsgBox("请认真检查后交卷,交卷后则不能再继续考试!", _ 
              vbYesNo + vbInformation, "Basic自测考试") = vbYes Then 
        '改变试题当前记录,保存对试题最后的修改 
        cmdMove(1).Value = True 
        '获得学生答题数据 
        For i = 1 To iJ 
            strA = strA & Chr(13) & Chr(10) & strTest(i, 1) & "=" & strTest(i, 2) 
        Next 
        For i = iJ + 1 To iJ + iSO 
            strB = strB & Chr(13) & Chr(10) & strTest(i, 1) & "=" & strTest(i, 2) 
        Next 
        For i = iJ + iSO + 1 To iJ + iSO + 3 * iPR 
            strC = strC & Chr(13) & Chr(10) & strTest(i, 1) & "=" & strTest(i, 2) 
        Next 
        For i = iJ + iSO + 3 * iPR + 1 To iTotal 
            strD = strD & Chr(13) & Chr(10) & strTest(i, 1) & "=" & strTest(i, 2) 
        Next 
        strA = Mid(strA, 3) 
        strB = Mid(strB, 3) 
        strC = Mid(strC, 3) 
        strD = Mid(strD, 3) 
        '将学生答题数据存入数据库 
        strSQL = "Insert into 考试记录 (考号,判断题,选择题,程序阅读,程序填空) " & _ 
                 "VALUES ('" & StudentCode & "','" & strA & "','" & strB & "','" _ 
                 & strC & "','" & strD & "')" 
        objCn.Open 
        objCn.Execute strSQL 
        objCn.Close 
        MsgBox "成功提交试题,考试结束!", vbInformation, "Basic自测考试" 
        Unload Me 
        End  '结束程序运行 
    End If 
End Sub 
 
Private Sub Form_Load() 
    Dim n%, i%, m%, s%, s1% 
    Set objCn = New Connection 
    With objCn                                 '建立数据库联接 
        .Provider = "SQLOLEDB" 
        .ConnectionString = "User ID=sa;PWD=123;Server=" & TestServerIP & _ 
                            ";Initial Catalog=自测考试" 
        .Open 
    End With 
    '访问数据库获得判断题数据 
    Set objJudge = New Recordset                '实例化对象 
    With objJudge 
        Set .ActiveConnection = objCn           '建立数据库连接 
        .CursorLocation = adUseClient           '指定使用客户端游标 
        .CursorType = adOpenStatic              '指定使用静态游标 
        .Open "SELECT * FROM 判断题"            '获取判断题数据 
        Set .ActiveConnection = Nothing         '断开数据库连接 
    End With 
 
    '访问数据库获得单项选择题数据 
    Set objSelOne = New Recordset                '实例化对象 
    With objSelOne 
        Set .ActiveConnection = objCn           '建立数据库连接 
        .CursorLocation = adUseClient           '指定使用客户端游标 
        .CursorType = adOpenStatic              '指定使用静态游标 
        .Open "SELECT * FROM 选择题"            '获取选择题数据 
        Set .ActiveConnection = Nothing         '断开数据库连接 
    End With 
    '访问数据库获得程序阅读题数据 
    Set objProRead = New Recordset                '实例化对象 
    With objProRead 
        Set .ActiveConnection = objCn           '建立数据库连接 
        .CursorLocation = adUseClient           '指定使用客户端游标 
        .CursorType = adOpenStatic              '指定使用静态游标 
        .Open "SELECT * FROM 程序阅读"          '获取程序阅读题数据 
        Set .ActiveConnection = Nothing         '断开数据库连接 
    End With 
    '访问数据库获得程序填空题数据 
     Set objProFill = New Recordset                '实例化对象 
    With objProFill 
        Set .ActiveConnection = objCn           '建立数据库连接 
        .CursorLocation = adUseClient           '指定使用客户端游标 
        .CursorType = adOpenStatic              '指定使用静态游标 
        .Open "SELECT * FROM 程序填空"          '获取程序填空题数据 
        Set .ActiveConnection = Nothing         '断开数据库连接 
    End With 
    '访问数据库获得本次试题数据 
    Set objTest = New Recordset                '实例化对象 
    With objTest 
        Set .ActiveConnection = objCn           '建立数据库连接 
        .CursorLocation = adUseClient           '指定使用客户端游标 
        .CursorType = adOpenStatic              '指定使用静态游标 
        .Open "SELECT * FROM ThisTest"          '获取本次试题数据 
        Set .ActiveConnection = Nothing         '断开数据库连接 
        '统计总题数 
        .Filter = "题型='判断题'" 
        n = n + .RecordCount 
        iJ = .RecordCount 
        s = n * .Fields("分数") 
        lblNews = "一、判断题(" & Trim(Str(n)) & "小题,每题" & Trim(Str(.Fields("分数"))) _ 
                & "分,共" & Trim(Str(s)) & "分)" 
        .Filter = "题型='选择题'" 
        m = .RecordCount 
        iSO = m 
        n = n + m 
        s1 = m * .Fields("分数") 
        s = s + s1 
        lblNews = lblNews & vbCrLf & "二、选择题(" & Trim(Str(m)) & "小题,每题" & Trim(Str(.Fields("分数"))) _ 
                & "分,共" & Trim(Str(s1)) & "分)" 
        .Filter = "题型='程序阅读'" 
        iPR = .RecordCount 
        n = n + .RecordCount * 3 
        s1 = .Fields("分数") 
        '计算实际小题数 
        m = 0 
        While Not .EOF 
            objProRead.MoveFirst 
            objProRead.Find "编号=" & .Fields("编号") & "" 
            For i = 1 To 3 
                If objProRead.Fields("分题干" & Trim(Str(i))) <> "" Then m = m + 1 
            Next 
            .MoveNext 
        Wend 
        s = s + s1 * m 
        lblNews = lblNews & vbCrLf & "三、程序阅读题(" & Trim(Str(m)) & "小题,每题" & Trim(Str(s1)) _ 
                & "分,共" & Trim(Str(s1 * m)) & "分)" 
        .Filter = "题型='程序填空'" 
        iPF = .RecordCount 
        n = n + .RecordCount * 4 
        s1 = .Fields("分数") 
        '计算实际小题数 
        m = 0 
        While Not .EOF 
            objProFill.MoveFirst 
            objProFill.Find "编号=" & .Fields("编号") & "" 
            For i = 1 To 4 
                If objProFill.Fields("空" & Chr(i + 96)) <> "" Then m = m + 1 
            Next 
            .MoveNext 
        Wend 
        s = s + s1 * m 
        lblNews = lblNews & vbCrLf & "四、程序填空题(" & Trim(Str(m)) & "小题,每题" & Trim(Str(s1)) _ 
                & "分,共" & Trim(Str(s1 * m)) & "分)" 
        lblNews = "本试卷共4大题,总分" & Trim(Str(s)) & "分" & vbCrLf & lblNews 
        '重定义保存本次试题数据的数组 
        ReDim strTest(n, 2) 
        iTotal = n 
        '获取判断题数据 
        .Filter = "题型='判断题'" 
        n = 1 
        .MoveFirst 
        While Not .EOF 
            strTest(n, 1) = Trim(Str(.Fields("编号"))) 
            n = n + 1 
            .MoveNext 
        Wend 
        '获取选择题数据 
        .Filter = "题型='选择题'" 
        .MoveFirst 
        While Not .EOF 
            strTest(n, 1) = Trim(Str(.Fields("编号"))) 
            n = n + 1 
            .MoveNext 
        Wend 
        '获取程序填空题数据 
        .Filter = "题型='程序阅读'" 
        i = 1 
        .MoveFirst 
        While Not .EOF 
            strTest(n, 1) = Trim(Str(.Fields("编号"))) 
            n = n + 1 
            i = i + 1 
            If i > 3 Then 
                i = 1 
                .MoveNext 
            End If 
        Wend 
        '获取程序填空题数据 
        .Filter = "题型='程序填空'" 
        i = 1 
        .MoveFirst 
        While Not .EOF 
            strTest(n, 1) = Trim(Str(.Fields("编号"))) 
            n = n + 1 
            i = i + 1 
            If i > 4 Then 
                i = 1 
                .MoveNext 
            End If 
        Wend 
        .Filter = "" 
    End With 
    cmdMove(0).Value = True                 '显示第一道试题 
    objCn.Close 
End Sub 
Private Sub cmdMove_Click(Index As Integer) 
    Dim i%, strData$, n%, p% 
    With objTest 
        '保存当前试题所作答案 
        Select Case .AbsolutePosition 
            Case 1 To iJ 
                '保存判断题答案 
                If optYesNo(0) = True Then strTest(.AbsolutePosition, 2) = "TRUE" 
                If optYesNo(1) = True Then strTest(.AbsolutePosition, 2) = "FALSE" 
                optYesNo(0) = False 
                optYesNo(1) = False 
            Case iJ + 1 To iJ + iSO 
                '保存选择题答案 
                For i = 0 To 3 
                    If optSO(i) = True Then strTest(.AbsolutePosition, 2) = Chr(65 + i) 
                    optSO(i) = False 
                Next 
            Case iJ + iSO + 1 To iJ + iSO + iPR 
                '保存程序阅读题答案 
                p = (.AbsolutePosition - iJ - iSO - 1) * 2 
                For i = 0 To 3 
                    If optPR1(i) = True Then strTest(.AbsolutePosition + p, 2) = Chr(65 + i) 
                    If optPR2(i) = True Then strTest(.AbsolutePosition + p + 1, 2) = Chr(65 + i) 
                    If optPR3(i) = True Then strTest(.AbsolutePosition + p + 2, 2) = Chr(65 + i) 
                Next 
                For i = 0 To 3 
                    optPR1(i) = False: optPR2(i) = False: optPR3(i) = False 
                Next 
            Case iJ + iSO + iPR + 1 To iJ + iSO + iPR + iPF 
                '保存程序填空答案 
                p = (.AbsolutePosition - iJ - iSO - iPR - 1) * 3 + 2 * iPR 
                strTest(.AbsolutePosition + p, 2) = Trim(txtBlank(0)) 
                txtBlank(0) = "" 
                strTest(.AbsolutePosition + p + 1, 2) = Trim(txtBlank(1)) 
                txtBlank(1) = "" 
                strTest(.AbsolutePosition + p + 2, 2) = Trim(txtBlank(2)) 
                txtBlank(2) = "" 
                strTest(.AbsolutePosition + p + 3, 2) = Trim(txtBlank(3)) 
                txtBlank(3) = "" 
        End Select 
         
        '该变当前记录 
        Select Case Index           '切换当前记录 
            Case 0                  '使第一个记录成为当前记录 
                If .RecordCount > 0 Then .MoveFirst 
            Case 1                  '使上一个记录成为当前记录 
                If .RecordCount > 0 And Not .BOF Then 
                    .MovePrevious 
                    If .BOF Then .MoveFirst 
                End If 
            Case 2                  '使下一个记录成为当前记录 
                If .RecordCount > 0 And Not .EOF Then 
                    .MoveNext 
                    If .EOF Then .MoveLast 
                End If 
            Case 3                  '使最后一个记录成为当前记录 
                If .RecordCount > 0 Then .MoveLast 
        End Select 
         
        '显示当前试题内容 
        Select Case .AbsolutePosition 
            Case 1 To iJ 
                '显示判断题内容及所作答案 
                lblType = "一、判断题" 
                cmbType = "判断题" 
                txtTest = Trim(Str(.AbsolutePosition)) & "、" 
                objJudge.MoveFirst 
                objJudge.Find "编号=" & .Fields("编号") & "" 
                txtTest = txtTest & objJudge.Fields("题干") 
                If strTest(.AbsolutePosition, 2) = "TRUE" Then optYesNo(0) = True 
                If strTest(.AbsolutePosition, 2) = "FALSE" Then optYesNo(1) = True 
                frmAnswer(0).Visible = True 
                frmAnswer(1).Visible = False 
                frmAnswer(2).Visible = False 
                frmAnswer(3).Visible = False 
            Case iJ + 1 To iJ + iSO 
                '显示选择题内容以及所作答案 
                cmbType = "选择题" 
                lblType = "二、选择题" 
                txtTest = Trim(Str(.AbsolutePosition - iJ)) & "、" 
                objSelOne.MoveFirst 
                objSelOne.Find "编号=" & .Fields("编号") & "" 
                txtTest = txtTest & objSelOne.Fields("题干") 
                txtTest = txtTest & vbCrLf & " (A)" & objSelOne.Fields("选项a") 
                txtTest = txtTest & vbCrLf & " (B)" & objSelOne.Fields("选项b") 
                txtTest = txtTest & vbCrLf & " (C)" & objSelOne.Fields("选项c") 
                txtTest = txtTest & vbCrLf & " (D)" & objSelOne.Fields("选项d") 
                frmAnswer(0).Visible = False 
                frmAnswer(1).Visible = True 
                frmAnswer(2).Visible = False 
                frmAnswer(3).Visible = False 
                For i = 0 To 3 
                    If strTest(.AbsolutePosition, 2) = Chr(65 + i) Then optSO(i) = True 
                Next 
            Case iJ + iSO + 1 To iJ + iSO + iPR 
                cmbType = "程序阅读题" 
                '显示程序阅读内容以及所作答案 
                lblType = "三、程序阅读题" 
                n = .AbsolutePosition 
                p = (n - iJ - iSO - 1) * 2 
                txtTest = Trim(Str(n - iJ - iSO)) & "、" & vbCrLf 
                objProRead.MoveFirst 
                objProRead.Find "编号=" & .Fields("编号") & "" 
                 
                txtTest = txtTest & objProRead.Fields("题干") & vbCrLf 
                txtTest = txtTest & "(1)" & objProRead.Fields("分题干1") 
                strData = Replace(objProRead.Fields("选项1a"), Chr(13) & Chr(10), Chr(13) & Chr(10) & Space(10)) 
                txtTest = txtTest & vbCrLf & "     (A)" & strData 
                strData = Replace(objProRead.Fields("选项1b"), Chr(13) & Chr(10), Chr(13) & Chr(10) & Space(10)) 
                txtTest = txtTest & vbCrLf & "     (B)" & strData 
                strData = Replace(objProRead.Fields("选项1c"), Chr(13) & Chr(10), Chr(13) & Chr(10) & Space(10)) 
                txtTest = txtTest & vbCrLf & "     (C)" & strData 
                strData = Replace(objProRead.Fields("选项1d"), Chr(13) & Chr(10), Chr(13) & Chr(10) & Space(10)) 
                txtTest = txtTest & vbCrLf & "     (D)" & strData 
                 
                If objProRead.Fields("分题干2") <> "" Then 
                    txtTest = txtTest & vbCrLf & "(2)" & objProRead.Fields("分题干2") 
                    strData = Replace(objProRead.Fields("选项2a"), Chr(13) & Chr(10), Chr(13) & Chr(10) & Space(10)) 
                    txtTest = txtTest & vbCrLf & "     (A)" & strData 
                    strData = Replace(objProRead.Fields("选项2b"), Chr(13) & Chr(10), Chr(13) & Chr(10) & Space(10)) 
                    txtTest = txtTest & vbCrLf & "     (B)" & strData 
                    strData = Replace(objProRead.Fields("选项2c"), Chr(13) & Chr(10), Chr(13) & Chr(10) & Space(10)) 
                    txtTest = txtTest & vbCrLf & "     (C)" & strData 
                    strData = Replace(objProRead.Fields("选项2d"), Chr(13) & Chr(10), Chr(13) & Chr(10) & Space(10)) 
                    txtTest = txtTest & vbCrLf & "     (D)" & strData 
                    frmDivPR(1).Visible = True 
                Else 
                    frmDivPR(1).Visible = False 
                End If 
                 
                If objProRead.Fields("分题干3") <> "" Then 
                    If objProRead.Fields("分题干2") <> "" Then 
                        txtTest = txtTest & vbCrLf & "(3)" & objProRead.Fields("分题干3") 
                    Else 
                        txtTest = txtTest & vbCrLf & "(2)" & objProRead.Fields("分题干3") 
                    End If 
                    strData = Replace(objProRead.Fields("选项3a"), Chr(13) & Chr(10), Chr(13) & Chr(10) & Space(10)) 
                    txtTest = txtTest & vbCrLf & "     (A)" & strData 
                    strData = Replace(objProRead.Fields("选项3b"), Chr(13) & Chr(10), Chr(13) & Chr(10) & Space(10)) 
                    txtTest = txtTest & vbCrLf & "     (B)" & strData 
                    strData = Replace(objProRead.Fields("选项3c"), Chr(13) & Chr(10), Chr(13) & Chr(10) & Space(10)) 
                    txtTest = txtTest & vbCrLf & "     (C)" & strData 
                    strData = Replace(objProRead.Fields("选项3d"), Chr(13) & Chr(10), Chr(13) & Chr(10) & Space(10)) 
                    txtTest = txtTest & vbCrLf & "     (D)" & strData 
                    frmDivPR(2).Visible = True 
                Else 
                    frmDivPR(2).Visible = False 
                End If 
                frmAnswer(0).Visible = False 
                frmAnswer(1).Visible = False 
                frmAnswer(2).Visible = True 
                frmAnswer(3).Visible = False 
                For i = 0 To 3 
                    If strTest(.AbsolutePosition + p, 2) = Chr(65 + i) Then optPR1(i) = True 
                    If strTest(.AbsolutePosition + p + 1, 2) = Chr(65 + i) Then optPR2(i) = True 
                    If strTest(.AbsolutePosition + p + 2, 2) = Chr(65 + i) Then optPR3(i) = True 
                Next 
            Case iJ + iSO + iPR + 1 To iJ + iSO + iPR + iPF 
                cmbType = "程序填空题" 
                '显示程序填空题及所作答案 
                p = (.AbsolutePosition - iJ - iSO - iPR - 1) * 3 + 2 * iPR 
                lblType = "四、程序填空题" 
                n = .AbsolutePosition 
                txtTest = Trim(Str(n - iJ - iSO - iPR)) & "、" & vbCrLf 
                objProFill.MoveFirst 
                objProFill.Find "编号=" & .Fields("编号") & "" 
                txtTest = txtTest & objProFill.Fields("题干") 
                txtBlank(0) = strTest(n + p, 2) 
                txtBlank(1) = strTest(n + p + 1, 2) 
                txtBlank(2) = strTest(n + p + 2, 2) 
                txtBlank(3) = strTest(n + p + 3, 2) 
                If objProFill.Fields("空b") = "" Then 
                    txtBlank(1).Visible = False 
                    lblBlank(1).Visible = False 
                Else 
                    txtBlank(1).Visible = True 
                    lblBlank(1).Visible = True 
                End If 
                If objProFill.Fields("空c") = "" Then 
                    txtBlank(2).Visible = False 
                    lblBlank(2).Visible = False 
                Else 
                    txtBlank(2).Visible = True 
                    lblBlank(2).Visible = True 
                End If 
                If objProFill.Fields("空d") = "" Then 
                    txtBlank(3).Visible = False 
                    lblBlank(3).Visible = False 
                Else 
                    txtBlank(3).Visible = True 
                    lblBlank(3).Visible = True 
                End If 
                frmAnswer(0).Visible = False 
                frmAnswer(1).Visible = False 
                frmAnswer(2).Visible = False 
                frmAnswer(3).Visible = True 
        End Select 
    End With 
End Sub 
 
Private Sub Form_Unload(Cancel As Integer) 
    Set objCn = Nothing 
    Set objJudge = Nothing 
    Set objTest = Nothing 
    Set objSelOne = Nothing 
    Set objProRead = Nothing 
    Set objProFill = Nothing 
End Sub