优化尚未结束,今天我们继续!
之前和大家分享了几个关于学生管理系统优化的方法!今天还有一些方法继续分享给大家!
1.查询修改信息窗体
(1)在你进入数据查询修改的窗体的时候,如果你没有数据的时候,系统应该会给你提示,没有数据是否添加!代码如下:
If mrc.EOF = False Then mrc.MoveFirst Call viewData myBookmark = mrc.Bookmark Else str1$ = MsgBox("没有纪录,是否添加记录!", vbOKOnly + vbExclamation, "警告") If str1$ = True Then frmAddcourseinfo.Show Unload Me End If Exit Sub End If 只有这些还是不够的,你需要在主窗体的代码段输入:
On Error Resume Next
这行代码的意思就是 ,当一条出现问题的时候,程序运行下一条语句!
(2)在修改信息窗体有一个删除记录的按钮,在你删除最后一条信息记录的时候,程序会给你报错!所以我们需要在程序删除最有一条指令的时候,进行一个判断,是否删除最后一条记录,删除后没有记录就进入信息添加的窗口!代码如下:
If mrc.RecordCount = 1 Then '表中只剩一条数据 str1$ = MsgBox("这是最后一条记录,是否删除?", vbOKOnly + vbExclamation, "警告") If str1$ = vbOK Then mrc.Delete '删除数据 MsgBox "数据为空,是否添加?", vbOKOnly + vbExclamation, "警告" frmAddresult.Show frmModifyresult.Hide End If Else (3)还有一个问题,就是你在修改信息的时候,如果你修改学号,改成之前有的学号,系统是会告诉你你输入的学号是重复的学号,你重新输入,但是你点击确定之后,你会发现修改的那条记录没有了,而在你不修改学号,改别的信息的时候,有数据库里还有之前的学号,它也会给你报错,之后你修改的信息也会消失!
这个问题出现的主要原因就是,书上写的代码是在你修改数据之前,先把数据库的数据删除,在你修改之后,他会输入一条新的数据!知道了原因,你就可以按照逻辑,解决问题了!先上代码:
If (txtSID.Text <> asid) Then txtSQL = "select*from student_info where student_ID='" & Trim(txtSID.Text) & " '" Set mrcc = ExecuteSQL(txtSQL, MsgText) '有问题 If mrcc.EOF = False Then MsgBox "学号重复,请重新输入!", vbOKOnly + vbRetryCancel, "警告" mrcc.Close txtSID.SetFocus Else If Not IsDate(txtBorndate.Text) Then MsgBox "出生时间应输入日期格式(yyyy-mm-dd)!", vbOKOnly + vbExclamation, "警告" txtBorndate.SetFocus Else txtBorndate = Format(txtBorndate, "yyyy-mm-dd") If Not IsDate(txtRudate.Text) Then MsgBox "入校时间应输入日期格式(yyyy-mm-dd)!", vbOKOnly + vbExclamation, "警告" txtRudate.SetFocus Else txtSQL = "select * from student_info" Set mrc = ExecuteSQL(txtSQL, MsgText) mrc.Bookmark = myBookmark mrc.Delete txtRudate = Format(txtRudate, "yyyy-mm-dd") mrc.AddNew mrc.Fields(0) = Trim(txtSID.Text) mrc.Fields(1) = Trim(txtName.Text) mrc.Fields(2) = Trim(comboSex.Text) mrc.Fields(3) = Trim(txtBorndate.Text) mrc.Fields(4) = Trim(ComboClassno.Text) mrc.Fields(5) = Trim(txtTel.Text) mrc.Fields(6) = Trim(txtRudate.Text) mrc.Fields(7) = Trim(txtAddress.Text) mrc.Fields(8) = Trim(txtComment.Text) mrc.Update mrc.Bookmark = myBookmark Call viewData MsgBox "修改成绩成功!", vbOKOnly + vbExclamation, "警告" firstCommand.Enabled = True previousCommand.Enabled = True nextCommand.Enabled = True lastCommand.Enabled = True txtSID.Enabled = True txtName.Enabled = False comboSex.Enabled = False txtBorndate.Enabled = False ComboClassno.Enabled = False txtRudate.Enabled = False txtTel.Enabled = False txtAddress.Enabled = False txtComment.Enabled = False mcclean = True End If End If End If Else If Not IsDate(txtBorndate.Text) Then MsgBox "出生时间应输入日期格式(yyyy-mm-dd)!", vbOKOnly + vbExclamation, "警告" txtBorndate.SetFocus Else txtBorndate = Format(txtBorndate, "yyyy-mm-dd") If Not IsDate(txtRudate.Text) Then MsgBox "入校时间应输入日期格式(yyyy-mm-dd)!", vbOKOnly + vbExclamation, "警告" txtRudate.SetFocus Else txtRudate = Format(txtRudate, "yyyy-mm-dd") mrc.Fields(0) = Trim(txtSID.Text) mrc.Fields(1) = Trim(txtName.Text) mrc.Fields(2) = Trim(comboSex.Text) mrc.Fields(3) = Trim(txtBorndate.Text) mrc.Fields(4) = Trim(ComboClassno.Text) mrc.Fields(5) = Trim(txtTel.Text) mrc.Fields(6) = Trim(txtRudate.Text) mrc.Fields(7) = Trim(txtAddress.Text) mrc.Fields(8) = Trim(txtComment.Text) mrc.Update mrc.Bookmark = myBookmark Call viewData MsgBox "修改成绩成功!", vbOKOnly + vbExclamation, "警告" firstCommand.Enabled = True previousCommand.Enabled = True nextCommand.Enabled = True lastCommand.Enabled = True txtSID.Enabled = True txtName.Enabled = False comboSex.Enabled = False txtBorndate.Enabled = False ComboClassno.Enabled = False txtRudate.Enabled = False txtTel.Enabled = False txtAddress.Enabled = False txtComment.Enabled = False mcclean = True End If End If End If End Sub
这些代码虽然多,但是很多重复的,你只要是理解其中的逻辑的顺序就好了!那个asid就是你之前的学号,在修改完进行更新的时候,先让他进行判断,如果你修改后的学号与之前的学号不一样,就说明你修改的是学号,那就在和数据库的别的信息进行比较,继续惊醒下边的操作,但是如果你修改后的学号与之前的一样说明,你修改的是别的,那就直接修改,不用进行学号比较!
其实还有一个比较简单的方法,就是在你要修改这条消息的时候,把书签定在这里,然后进行修改,直接更新数据,不需要把以前的数据删除,当你修改的学号重复或是别的信息有问题时,直接回到书签位置,这样你的信息也不会消失了!但是你需要修改一下SQL语句,在学号检验的时候,排除本条数据!大家感兴趣可以自己去试试!嘿嘿!
在最后还是给大家一些小的提醒!
(1)在输入出生日期,入校日期时一定要符合逻辑,出生日期早于入校日期!而且时间不能过早,要符合实际。这些问题只需要你在输入信息,添加数据的时候,进行一下比较判断就好了!
(2)在使用Combo这个控件的时候,添加数据的时候,则需要选择它为只能选择,无法输入的模式,这个则只需要修改一下控件的Style属性就好了!
这些就是我在优化学生信息管理系统遇到问题和解决方法,希望能给大家一些帮助,如果我写的哪里有问题,希望大家积极指出!以后有新的发现,我还会给大家分享!