学生管理系统之BUG(2)

BUG二:更新为已有记录时出错。

原代码中是“先删除,再判断”。

所以即使是修改为已有学号,则它是先删除该(要进行修改)记录,然后在判断是否有重复的学号,如果重复,则继续进行更改,可是再一次更改完成后单击更新时,需要更改的记录已经在上一次更新时删除了,因此这次删除的是一个空记录,故会产生错误!

而改后的代码是“先判断,再删除”。

因此在判断出有重复的学号时,则不进行删除,这样在再一次更改后若满足条件,则先将原记录删除,再将新的记录添加到数据库中。

补充:

由于改后的代码是先判断后删除,所以在判断过程中,若学号没有更改则会发生错误,于是我用了“where student_ID='" & Trim(txtNumber.Text) & "' or student_ID='" & mrs.Fields(0).Value & "'"”语句来避免此错误发生。

下面我们以frmModifysinfo中(在其他修改窗体中类似错误)的更新错误为例:

源代码:

mrc.Delete

txtSQL = "select * from student_Info where student_ID = '" & Trim(txtSID.Text) & "'"

Set mrcc = ExecuteSQL(txtSQL, MsgText)

If mrcc.EOF = False Then

MsgBox "学号重复,请重新输入!", vbOKOnly + vbExclamation, "警告"

mrcc.Close

txtSID.SetFocus

Else

mrcc.Close

mrc.AddNew

……

结果运行时,若将一个记录学号更改为一个已有记录,会提示重复,再次更改为没有的记录时会出现错误

   

改后代码:

strSQL = "select * from student_Info where student_ID='" & Trim(txtNumber.Text) & "' or student_ID='" & mrs.Fields(0).Value & "'"

Set mrss = ExecuteSQL(strSQL, MsgText)

If mrss.RecordCount > 1 Then

MsgBox "已有该学号,请重新输入!", vbExclamation + vbOKOnly, "警告"

txtNumber.SetFocus

txtNumber.Text = ""

mrss.Close

Exit Sub

Else

mrss.Close

strSQL = "select * from student_Info"

Set mrs = ExecuteSQL(strSQL, MsgText)

mrs.Delete

mrs.MoveNext

If mrs.EOF Then mrs.MovePrevious

mrs.addnew

……

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值