学生信息管理---优化修改学籍信息(3021错误)

这一窗体是比较麻烦的,需要处理的问题:

1.删除最后一条记录,不能出现3021的错误
2.删除最后一条记录要关闭窗体
3.本窗体的数据库如果没有数据禁止打开
4.第一次把数据删除完,再次添加数据,上一条,下一条,修改,删除记录都会出现3021的错误(不能重复使用)
5.出生日期和入校日期的关系,出生日期不能大于入校日期
6.文本框的限制和数据库中对应数据中的数据类型的范围

这里写图片描述
问题一和问题四:
运用了一个按钮连接数据库并刷新数据库,(个人认为出现3021这个错误是数据库没有及时刷新并赋给窗体数据)为了使用户先点刷新数据,就使窗体中的所有按钮和文本框都不能用,点击刷新按钮,frame1和frame2中的按钮都可用,并显示下一条数据(因为在测试中,发现删除完数据之后在添加数据,当点开修改学籍时,会出现之前最后删除的信息)

Private Sub cmdRefresh_Click()

    '使frame2中的按钮可用
    Frame2.Enabled = True
    firstCommand.Enabled = True
    previousCommand.Enabled = True
    nextCommand.Enabled = True
    lastCommand.Enabled = True

    '使frame1中的按钮可用
    editCommand.Enabled = True
    updateCommand.Enabled = True
    cancelCommand.Enabled = True
    deleteCommand.Enabled = True

    '查询学籍,mrc用来保存txtSQL查询到的信息,msgtext来显示查询函数的查询状态,数据更新
    Dim txtSQL As String
    Dim MsgText As String
    txtSQL = "select * from student_Info "
    Set mrc = ExecuteSQL(txtSQL, MsgText)
    mrc.Update

    '显示下一个数据 
    mrc.MoveNext
    If mrc.EOF Then
        mrc.MoveLast
    End If

    Call viewData

    '按钮不可用
    cmdRefresh.Enabled = False

End Sub

问题2,因为删除最后一个记录,窗体会隐藏,注意不是卸载,所以在添加新的信息之后在打开修改学籍信息窗体,会出现frame1和frame2按钮可用,这是因为没有运行load里面的代码,为了使用户每次进入修改学籍窗体点击刷新数据,所以在窗体隐藏时,使frame1和frame2按钮不可用,使cmdRefresh(刷新数据)按钮可用

    Private Sub deleteCommand_Click() 

    cmdRefresh.Enabled = True

    Frame2.Enabled = False                          '使导航按钮变为有效
    firstCommand.Enabled = False
    previousCommand.Enabled = False
    nextCommand.Enabled = False
    lastCommand.Enabled = False

    editCommand.Enabled = False
    updateCommand.Enabled = False
    cancelCommand.Enabled = False
    deleteCommand.Enabled = False

    If mrc.EOF Then 
    mrc.MoveFirst
    myBookmark = mrc.Bookmark
    mrc.MoveLast
    mrc.Delete
    mrc.Update
    mrc.Bookmark = myBookmark

    Me.Hide

问题三:需要在frmMain窗体中,点击修改学籍信息代码中写入:

Private Sub modifysinfo_Menu_Click()
    Dim txtSQL As String
    Dim MsgText As String
    Dim mrc As ADODB.Recordset
    txtSQL = "select * from student_Info "
    Set mrc = ExecuteSQL(txtSQL, MsgText)

    If mrc.BOF Then
    MsgBox "当前没有记录,请添加记录"
    Exit Sub
    End If

    frmModifysinfo.Show


End Sub

问题五:因为用的控件不是文本框而是DTPicker,以下是代码:

If DTPicker2.Value >= DTPicker1.Value Then
        MsgBox "出生日期填入错误"
        DTPicker2.SetFocus
        Exit Sub
    End If

问题六:
如:学号中数据库中的数据类型是int,范围是[-2147483648,2147483647],所以你设置的文本框的范围不能超过它的值。

Private Sub txtSID_KeyPress(KeyAscii As Integer)

    '代码输入字符数最长9个
    txtSID.MaxLength = 9

    '只能输入数字和退格符
    If KeyAscii = 8 Then
    ElseIf KeyAscii < 48 Or KeyAscii > 57 Then KeyAscii = 0
    End If

End Sub

猜你喜欢

转载自blog.csdn.net/lclcsdnblink/article/details/81701917
今日推荐