内容
确认按钮不管用
这个问题在别的窗体里也遇见过,当时只记得删除窗体,新建窗体,删除里面的代码,从新输入代码后问题解决,但具体问题在哪里还是不得而知。今天遇到问题后我依据老法子尝试后仍然没有效果。之后变逐个分析造成此问题的原因。
1.首先我想到的是,我的代码没有写“OK事件里”,尝试双击按钮后,发现就写在正确的事件中
2.接着,我一一核对属性名称,主窗体中链接的代码名称是否正确,依然没有问题
3.我开始排查代码,我查找代码有无写错,代码无错
4.我开始分析是否没连接到数据库中,可是代码真真切切没有毛病呀。
5.找到老曹后,最后分析出来我已经用“if mrc.eof = true then”判断了输入的卡号信息,但是红线的代码也是判断输入的卡号信息,同一条件判断两次的逻辑错误,红线上面的else=“红线内容”。
恍然大悟后明白了理解代码逻辑的重要性
修改窗体报出的各种错误
我们先来看一下我的代码
Private Sub cmdok_Click()
Dim txtsql As String
Dim msgtext As String
Dim mrc1 As ADODB.Recordset
'判断输入的原密码是否正确
If Trim(txtoldpassword.Text) <> Trim(mrc1.Fields(1)) Then
MsgBox "原密码错误,请重新输入!", vbonly + vbExclamation, "提示"
txtoldpassword.Text = ""
txtnewpassword1.Text = ""
txtnewpassword2.Text = ""
Else
'判断两次输入的新密码是否一致
If Trim(txtnewpassword1.Text) <> (Trim(txtnewpassword2.Text)) Then
MsgBox "新密码输入不一致!", vbOKOnly + vbExclamation, "提示"
txtoldpassword.Text = ""
txtnewpassword1.Text = ""
txtnewpassword2.Text = ""
txtsql = "select * from User_Info where userID='" & UserName & "'"
Set mrc1 = ExecuteSQL(txtsql, msgtext)
Else
'与原密码一致,更新数据库
mrc1.Fields(1) = txtnewpassword1.Text
mrc1.update
mrc1.Close
MsgBox "密码修改成功,重新登录后生效!", vbonly + vbExclamation, "提示"
Me.Hide
End If
End If
End Sub
突破思路:首先它报的错误是“实时错误91”。我做的第一件事是认认真真仔仔细细的检查代码是否有问题,不仅自己检查还叫了几个小伙伴帮忙检查。就这样依靠以前遇到问题的惯性思维,2个小时过去了,始终没弄明白这错误是怎么回事。有意思的是,依照惯性方式,我照着师哥的代码从新敲了一遍,也没有解决问题。最后还是佳莹帮了我,她仔细帮我分析了代码的逻辑,让我恍然大悟。
Private Sub cmdok_Click()
Dim txtsql As String
Dim msgtext As String
Dim mrc1 As ADODB.Recordset
'判断输入的原密码是否正确
If Trim(txtoldpassword.Text) <> Trim(mrc1.Fields(1)) Then
MsgBox "原密码错误,请重新输入!", vbonly + vbExclamation, "提示"
txtoldpassword.Text = ""
txtnewpassword1.Text = ""
txtnewpassword2.Text = ""
Else
'判断两次输入的新密码是否一致
If Trim(txtnewpassword1.Text) <> (Trim(txtnewpassword2.Text)) Then
MsgBox "新密码输入不一致!", vbOKOnly + vbExclamation, "提示"
txtoldpassword.Text = ""
txtnewpassword1.Text = ""
txtnewpassword2.Text = ""
txtsql = "select * from User_Info where userID='" & UserName & "'"
Set mrc1 = ExecuteSQL(txtsql, msgtext)
Else
'与原密码一致,更新数据库
mrc1.Fields(1) = txtnewpassword1.Text
mrc1.update
mrc1.Close
MsgBox "密码修改成功,重新登录后生效!", vbonly + vbExclamation, "提示"
Me.Hide
End If
End If
End Sub
我的代码是先调用的数据表再定义的,我声明的代码在调用之后,所以才会显示未定义。
紧接着,又出现了逻辑问题,程序报了另一个错误,“BOF或EOF为真”,我当时是按照自己以前的博客进行挑错但是也没有找出,佳莹一语道破,我这个窗体是单独运行的,在数据表声明中,我们声明了userID=UserName,这个UserName是程序登录的用户名。但是这个修改密码窗体单独运行,无论如何也是无法获取登录名的。果然,从登录窗体进入主窗体然后在进入修改密码栏后,密码修改成功!
结语
代码的逻辑才是调错的关键,学习的时候重在理解逻辑,切勿过于强调记忆