优化尚未结束,今天我们继续!
之前和大家分享了几个关于学生管理系统优化的方法!今天还有一些方法继续分享给大家!
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属性就好了!
这些就是我在优化学生信息管理系统遇到问题和解决方法,希望能给大家一些帮助,如果我写的哪里有问题,希望大家积极指出!以后有新的发现,我还会给大家分享!