⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 frmscore.frm

📁 VB+access学生信息管理系统,基本完成了学生信息的添加,修改,打印,查询功能.大家互相学习吧.
💻 FRM
📖 第 1 页 / 共 2 页
字号:
    & "from score,students where score.number=students.number " _
    & "and score.number like '" & njComb.Text & szyArray(1) & szyArray(2) & bjComb.Text _
    & "%'" & " and score.lesson_id='" & skcArray(1) & "'" & " order by score.number asc"
End Sub

'窗体尺寸调整事件
Private Sub Form_Resize()
On Error Resume Next
Const gl As Integer = 50 '间隙常数
    SSPanel1.Left = gl
    SSPanel1.Width = Me.ScaleWidth - 2 * gl
    SSPanel2.Left = (Me.ScaleWidth - SSPanel2.Width) / 2
    DataGrid1.Left = gl
    DataGrid1.Width = Me.ScaleWidth - 2 * gl
    DataGrid1.Height = Me.ScaleHeight - DataGrid1.Top - StatBar.Height - 2 * gl
    '只有第一次调整窗体尺寸时才执行以下代码
    If bFirstStart Then
        DataGrid1.Refresh
        Adodc1.Refresh
        DataGrid1.Columns(0).Locked = True   '不允许编辑学号
        DataGrid1.Columns(1).Locked = True   '不允许编辑姓名
        DataGrid1.Columns(2).Locked = True   '不允许编辑课程代码
        '建表菜单当记录集为空时使能,不为空时禁止
        If Adodc1.Recordset.RecordCount = 0 Then
            Call SetCreTableMenuAndButtonEn(True)
        Else
            Call SetCreTableMenuAndButtonEn(False)
        End If
        Set cn = Adodc1.Recordset.ActiveConnection '获取当前记录集的连接对象
        cn.BeginTrans '开始事务
        bFirstStart = False
    End If
End Sub

'DataGrid内部错误处理
Private Sub DataGrid1_Error(ByVal DataError As Integer, Response As Integer)
    If DataError = 7007 Then
        MsgBox "所输字符数超过允许输入字符最大个数,参见状态栏提示!", _
               vbCritical, "错误提示"
        Response = 0
    ElseIf DataError = 7008 Then
        MsgBox "不允许手动添加成绩记录,要输入成绩请选择“操作”菜单下的“建表”命令!", _
               vbCritical, "错误提示"
        Response = 0
    End If
End Sub

'设置"建表"菜单、命令按钮的使能与否状态
Private Sub SetCreTableMenuAndButtonEn(bEn As Boolean)
    StudentMIS.mOpe_CreTable.Enabled = bEn
    StudentMIS.Toolbar1.Buttons("New").Enabled = bEn
End Sub

'年级组合框单击事件
Private Sub njComb_Click()
    If bFirstStart Then Exit Sub
    Call SaveData
    '重新初始化状态栏显示信息
    StatBar.Panels(1).Text = "当前记录位置:0"
    StatBar.Panels(2).Text = "记录总数:0"
    StatBar.Panels(3).Text = ""
    '打开更新后的记录集
    Call SetAdc
    Adodc1.Refresh
    DataGrid1.Columns(0).Locked = True   '不允许编辑学号
    DataGrid1.Columns(1).Locked = True   '不允许编辑姓名
    DataGrid1.Columns(2).Locked = True   '不允许编辑课程代码
    '建表菜单当记录集为空时使能,不为空时禁止
    If Adodc1.Recordset.RecordCount = 0 Then
        Call SetCreTableMenuAndButtonEn(True)
    Else
        Call SetCreTableMenuAndButtonEn(False)
    End If
    Set cn = Adodc1.Recordset.ActiveConnection '获取当前记录集的连接对象
    cn.BeginTrans '开始一个新事务
End Sub

'学院组合框单击事件
Private Sub xyComb_Click()
Dim msql$, sArray() As String, mrs As New ADODB.Recordset
    If bFirstStart Then Exit Sub
    Call SaveData
    '填充专业组合框
    sArray = Split(xyComb.Text)
    msql = "select distinct major.major_name,lessons.institute_id," & _
           "lessons.major_id from major,lessons where " _
           & " lessons.institute_id='" & sArray(1) & "'" _
           & " and lessons.institute_id=major.institute_id " _
           & " and major.major_id=lessons.major_id " _
           & " order by lessons.institute_id,lessons.major_id asc"
    Set mrs = ExecuteSQL(msql)
    Call ADDComboListRS(zyComb, mrs, False, "major_name", "institute_id", "major_id")
    '重新初始化状态栏显示信息
    StatBar.Panels(1).Text = "当前记录位置:0"
    StatBar.Panels(2).Text = "记录总数:0"
    StatBar.Panels(3).Text = ""
    '打开更新后的记录集
    Call SetAdc
    Adodc1.Refresh
    DataGrid1.Columns(0).Locked = True   '不允许编辑学号
    DataGrid1.Columns(1).Locked = True   '不允许编辑姓名
    DataGrid1.Columns(2).Locked = True   '不允许编辑课程代码
    '建表菜单当记录集为空时使能,不为空时禁止
    If Adodc1.Recordset.RecordCount = 0 Then
        Call SetCreTableMenuAndButtonEn(True)
    Else
        Call SetCreTableMenuAndButtonEn(False)
    End If
    Set cn = Adodc1.Recordset.ActiveConnection '获取当前记录集的连接对象
    cn.BeginTrans '开始一个新事务
End Sub

'专业组合框单击事件
Private Sub zyComb_Click()
Dim msql$, sArray() As String, mrs As New ADODB.Recordset
    If bFirstStart Then Exit Sub
    Call SaveData
    '填充课程组合框
    sArray = Split(zyComb.Text)
    msql$ = "select distinct lesson_id,lesson_name from lessons " _
        & " where institute_id='" & sArray(1) & "'" & " and major_id='" _
        & sArray(2) & "'" & "  and term='" & xqComb.Text & "'" _
        & " order by lesson_id asc"
    Set mrs = ExecuteSQL(msql)
    Call ADDComboListRS(kcComb, mrs, False, "lesson_name", "lesson_id")
    '重新初始化状态栏显示信息
    StatBar.Panels(1).Text = "当前记录位置:0"
    StatBar.Panels(2).Text = "记录总数:0"
    StatBar.Panels(3).Text = ""
    '打开更新后的记录集
    Call SetAdc
    Adodc1.Refresh
    DataGrid1.Columns(0).Locked = True   '不允许编辑学号
    DataGrid1.Columns(1).Locked = True   '不允许编辑姓名
    DataGrid1.Columns(2).Locked = True   '不允许编辑课程代码
    '建表菜单当记录集为空时使能,不为空时禁止
    If Adodc1.Recordset.RecordCount = 0 Then
        Call SetCreTableMenuAndButtonEn(True)
    Else
        Call SetCreTableMenuAndButtonEn(False)
    End If
    Set cn = Adodc1.Recordset.ActiveConnection '获取当前记录集的连接对象
    cn.BeginTrans '开始一个新事务
End Sub

'班级组合框单击事件
Private Sub bjComb_Click()
    If bFirstStart Then Exit Sub
    Call SaveData
    '重新初始化状态栏显示信息
    StatBar.Panels(1).Text = "当前记录位置:0"
    StatBar.Panels(2).Text = "记录总数:0"
    StatBar.Panels(3).Text = ""
    '打开更新后的记录集
    Call SetAdc
    Adodc1.Refresh
    DataGrid1.Columns(0).Locked = True   '不允许编辑学号
    DataGrid1.Columns(1).Locked = True   '不允许编辑姓名
    DataGrid1.Columns(2).Locked = True   '不允许编辑课程代码
    '建表菜单当记录集为空时使能,不为空时禁止
    If Adodc1.Recordset.RecordCount = 0 Then
        Call SetCreTableMenuAndButtonEn(True)
    Else
        Call SetCreTableMenuAndButtonEn(False)
    End If
    Set cn = Adodc1.Recordset.ActiveConnection '获取当前记录集的连接对象
    cn.BeginTrans '开始一个新事务
End Sub

'学期组合框单击事件
Private Sub xqComb_Click()
Dim msql$, sArray() As String, mrs As New ADODB.Recordset
    If bFirstStart Then Exit Sub
    Call SaveData
    '填充课程组合框
    sArray = Split(zyComb.Text)
    msql$ = "select distinct lesson_id,lesson_name from lessons " _
       & " where institute_id='" & sArray(1) & "'" & " and major_id='" _
       & sArray(2) & "'" & "  and term='" & xqComb.Text & "'" _
       & " order by lesson_id asc"
    Set mrs = ExecuteSQL(msql)
    Call ADDComboListRS(kcComb, mrs, False, "lesson_name", "lesson_id")
    '重新初始化状态栏显示信息
    StatBar.Panels(1).Text = "当前记录位置:0"
    StatBar.Panels(2).Text = "记录总数:0"
    StatBar.Panels(3).Text = ""
    '打开更新后的记录集
    Call SetAdc
    Adodc1.Refresh
    DataGrid1.Columns(0).Locked = True   '不允许编辑学号
    DataGrid1.Columns(1).Locked = True   '不允许编辑姓名
    DataGrid1.Columns(2).Locked = True   '不允许编辑课程代码
    '建表菜单当记录集为空时使能,不为空时禁止
    If Adodc1.Recordset.RecordCount = 0 Then
        Call SetCreTableMenuAndButtonEn(True)
    Else
        Call SetCreTableMenuAndButtonEn(False)
    End If
    Set cn = Adodc1.Recordset.ActiveConnection '获取当前记录集的连接对象
    cn.BeginTrans '开始一个新事务
End Sub

'课程组合框单击事件
Private Sub kcComb_Click()
    If bFirstStart Then Exit Sub
    Call SaveData
    '重新初始化状态栏显示信息
    StatBar.Panels(1).Text = "当前记录位置:0"
    StatBar.Panels(2).Text = "记录总数:0"
    StatBar.Panels(3).Text = ""
    '打开更新后的记录集
    Call SetAdc
    Adodc1.Refresh
    DataGrid1.Columns(0).Locked = True   '不允许编辑学号
    DataGrid1.Columns(1).Locked = True   '不允许编辑姓名
    DataGrid1.Columns(2).Locked = True   '不允许编辑课程代码
    '建表菜单当记录集为空时使能,不为空时禁止
    If Adodc1.Recordset.RecordCount = 0 Then
        Call SetCreTableMenuAndButtonEn(True)
    Else
        Call SetCreTableMenuAndButtonEn(False)
    End If
    Set cn = Adodc1.Recordset.ActiveConnection '获取当前记录集的连接对象
    cn.BeginTrans '开始一个新事务
End Sub

'当前单元位置改变事件
Private Sub DataGrid1_RowColChange(LastRow As Variant, ByVal LastCol As Integer)
Dim dbrow As Long, s1$, s2$, s3$
'确定记录指针
On Error Resume Next
With Adodc1.Recordset
    If .RecordCount = 0 Then
      dbrow = .RecordCount
    Else
      dbrow = .AbsolutePosition
    End If
    s1 = "当前记录位置:" & dbrow
    s2 = "记录总数:" & Adodc1.Recordset.RecordCount
    s3 = "提示:" & Adodc1.Recordset.Fields(DataGrid1.Col).Name & "最多只允许输入" & _
         Adodc1.Recordset.Fields(DataGrid1.Col).DefinedSize & "位字符!"
    StatBar.Panels(1).Text = s1
    StatBar.Panels(2).Text = s2
    StatBar.Panels(3).Text = s3
End With
End Sub

'建表过程,新建成绩录入表
Public Sub CreateScoreTable()
    Dim mrs As New ADODB.Recordset, msql$, szyArray() As String, skcArray() As String, i%
    szyArray = Split(zyComb.Text): skcArray = Split(kcComb.Text)
    msql = "select number,name from students where number like '" & njComb.Text _
          & szyArray(1) & szyArray(2) & bjComb.Text & "%'" & " order by number asc"
    Set mrs = ExecuteSQL(msql)
    If mrs.RecordCount > 0 Then
        mrs.MoveFirst
        For i = 1 To mrs.RecordCount
            Adodc1.Recordset.AddNew
            Adodc1.Recordset.Fields("学号").Value = mrs.Fields("number").Value
            Adodc1.Recordset.Fields("姓名").Value = mrs.Fields("name").Value
            Adodc1.Recordset.Fields("课程代码").Value = skcArray(1)
            mrs.MoveNext
        Next i
        DataGrid1.Refresh
        DataEdited = True
        '建表菜单和建表工具栏按钮失效
        StudentMIS.mOpe_CreTable.Enabled = False
        StudentMIS.Toolbar1.Buttons("New").Enabled = False
    Else
        MsgBox "无所选年级专业班的学生信息,请检查选定条件是否正确!", vbInformation, "提示"
    End If
End Sub

Public Sub SaveData()
'保存全部修改
On Error GoTo errhandler:
    If Adodc1.Recordset.RecordCount > 0 Then Adodc1.Recordset.MoveFirst
    Adodc1.Recordset.UpdateBatch
    cn.CommitTrans '提交事务
    DataEdited = False
    DataGrid1.Refresh
    Adodc1.Refresh
    DataGrid1.Columns(0).Locked = True   '不允许编辑学号
    DataGrid1.Columns(1).Locked = True   '不允许编辑姓名
    DataGrid1.Columns(2).Locked = True   '不允许编辑课程代码
    '建表菜单当记录集为空时使能,不为空时禁止
    If Adodc1.Recordset.RecordCount = 0 Then
        Call SetCreTableMenuAndButtonEn(True)
    Else
        Call SetCreTableMenuAndButtonEn(False)
    End If
    Set cn = Adodc1.Recordset.ActiveConnection '获取当前记录集的连接对象
    cn.BeginTrans '开始一个新事务
    Exit Sub
errhandler:
    '显示与数据库操作规则有关的错误信息
    Call ShowDbRuleErrInf("学号")
End Sub

Public Sub CancelData()
'还原全部修改
On Error GoTo errhandler:
    If Adodc1.Recordset.RecordCount > 0 Then Adodc1.Recordset.MoveFirst
    Adodc1.Recordset.CancelBatch
    cn.RollbackTrans  '回滚事务
    DataEdited = False
    DataGrid1.Refresh
    Adodc1.Refresh
    DataGrid1.Columns(0).Locked = True   '不允许编辑学号
    DataGrid1.Columns(1).Locked = True   '不允许编辑姓名
    DataGrid1.Columns(2).Locked = True   '不允许编辑课程代码
    '建表菜单当记录集为空时使能,不为空时禁止
    If Adodc1.Recordset.RecordCount = 0 Then
        Call SetCreTableMenuAndButtonEn(True)
    Else
        Call SetCreTableMenuAndButtonEn(False)
    End If
    Set cn = Adodc1.Recordset.ActiveConnection '获取当前记录集的连接对象
    cn.BeginTrans '开始一个新事务
    Exit Sub
errhandler:
    '显示与数据库操作规则有关的错误信息
    Call ShowDbRuleErrInf("学号")
End Sub

Public Sub ClearData()
'删空当前记录集
    Call DBRecordset_Delete(Adodc1.Recordset)
    DataGrid1.Refresh
    '设置修改标志
    DataEdited = True
    '建表菜单当记录集为空时使能,不为空时禁止
    If Adodc1.Recordset.RecordCount = 0 Then
        Call SetCreTableMenuAndButtonEn(True)
    Else
        Call SetCreTableMenuAndButtonEn(False)
    End If
End Sub

Public Sub DeleteData()
'删除当前记录
    '当前单元在最后一行,但没有 AddNew 操作,被挂起情况下退出该过程
    If DataGrid1.AddNewMode = dbgAddNewCurrent Or Adodc1.Recordset.RecordCount = 0 Then
        Exit Sub
    End If
    Adodc1.Recordset.Bookmark = DataGrid1.Bookmark
    Adodc1.Recordset.Delete
    '设置修改标志
    DataEdited = True
    DataGrid1.Refresh
    '建表菜单当记录集为空时使能,不为空时禁止
    If Adodc1.Recordset.RecordCount = 0 Then
        Call SetCreTableMenuAndButtonEn(True)
    Else
        Call SetCreTableMenuAndButtonEn(False)
    End If
End Sub

'窗体卸载前查询事件
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
Dim s$, b%
    If DataEdited = True Then
        s$ = "数据已修改,是否保存?"
        b = MsgBox(s$, vbYesNoCancel + vbQuestion, "操作提示")
        Select Case b
        Case vbYes            '保存修改
            Call SaveData
        Case vbNo             '取消修改
            Call CancelData
        Case vbCancel
            Cancel = True     '不关闭窗体
            Exit Sub
        End Select
    End If
    '"操作"菜单、按钮禁用
    Call InitMenuAndToolbars(False)
End Sub

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -