内容
确认按钮不管用
这个问题在别的窗体里也遇见过,当时只记得删除窗体,新建窗体,删除里面的代码,从新输入代码后问题解决,但具体问题在哪里还是不得而知。今天遇到问题后我依据老法子尝试后仍然没有效果。之后变逐个分析造成此问题的原因。
1.首先我想到的是,我的代码没有写“OK事件里”,尝试双击按钮后,发现就写在正确的事件中
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 "密码修改成功,重新登录后生效!","提示" 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 "原密码错误,请重新输入!","提示" 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 "密码修改成功,重新登录后生效!","提示" Me.Hide End If End If End Sub
我的代码是先调用的数据表再定义的,我声明的代码在调用之后,所以才会显示未定义。
紧接着,又出现了逻辑问题,程序报了另一个错误,“BOF或EOF为真”,我当时是按照自己以前的博客进行挑错但是也没有找出,佳莹一语道破,我这个窗体是单独运行的,在数据表声明中,我们声明了userID=UserName,这个UserName是程序登录的用户名。但是这个修改密码窗体单独运行,无论如何也是无法获取登录名的。果然,从登录窗体进入主窗体然后在进入修改密码栏后,密码修改成功!
结语
代码的逻辑才是调错的关键,学习的时候重在理解逻辑,切勿过于强调记忆