VB求助:BOF或EOF有一个是“真”,或者当前的记录已被删除.....

VB编写mis系统,其中用户信息修改模块存在问题:1.输入数据库中存在的用户名可以进行用户信息的修改,但最后会报错,如图上部分2.输入数据库中没有的用户名不能按照程序设计... VB编写mis系统,其中用户信息修改模块存在问题:
1.输入数据库中存在的用户名可以进行用户信息的修改,但最后会报错,如图上部分
2.输入数据库中没有的用户名不能按照程序设计运行,报错如图下部分
请VB大神看看我的程序是什么地方出问题了,代码如下:
Private Sub Command1_Click()
Dim sql As String
If Trim(Text1.Text) = "" Then
MsgBox "用户名不能为空", vbOKOnly + vbExclamation, ""
Exit Sub
Text1.SetFocus
Else
sql = "select * From Users"
Adodc1.CommandType = adCmdText
Adodc1.RecordSource = sql
Adodc1.Refresh
While (Adodc1.Recordset.EOF = False)
If Trim(Adodc1.Recordset.Fields(0)) = Trim(Text1.Text) Then
MsgBox "已有这个用户", vbOKOnly + vbExclamation, ""
Text1.SetFocus
Text1.Text = ""
Text2.Text = ""
Text3.Text = ""
Combo1.Text = ""
Exit Sub
Else
Adodc1.Recordset.MoveNext
End If
Wend
If Trim(Text2.Text) <> Trim(Text3.Text) Then
MsgBox "两次密码不一致", vbOKOnly + vbExclamation
Text2.SetFocus
Text2.Text = ""
Text3.Text = ""
Exit Sub
ElseIf Trim(Combo1.Text) <> "管理员" And Trim(Combo1.Text) <> "普通" Then
MsgBox "请选择用户权限", vbOKOnly + vbExclamation
Combo1.SetFocus
Else
Adodc1.Recordset.AddNew
Adodc1.Recordset.Fields(0) = Text1.Text
Adodc1.Recordset.Fields(1) = Text2.Text
Adodc1.Recordset.Fields(2) = Combo1.Text
Adodc1.Recordset.Update
MsgBox "添加用户成功", vbOKOnly + vbExclamation
Unload Me
End If
End If
End Sub
展开
 我来答
damyzl
2011-05-04 · TA获得超过1586个赞
知道大有可为答主
回答量:1475
采纳率:74%
帮助的人:912万
展开全部
你提到了2个错误,中断分别在哪句?

建议修改查询方式:
sql = "select * From Users where 用户名='" & Trim(Text1.Text) & "'"

While (Adodc1.Recordset.EOF = False)
...
wend
改成
if Adodc1.Recordset.recordcount>0 Then
MsgBox "已有这个用户", vbOKOnly + vbExclamation, ""
Text1.SetFocus
Text1.Text = ""
Text2.Text = ""
Text3.Text = ""
Combo1.Text = ""
Exit Sub
End If
ienty9at1
2011-05-03 · TA获得超过1479个赞
知道小有建树答主
回答量:1302
采纳率:100%
帮助的人:412万
展开全部
首先尽可能把存在bug的代码加以完善,
其次对于可能出现的不确定的意外可在过程开头加上
on error rusume next
不至程序直接退出.
或如下:
sub mysub()
on error goto errtrap
'自己的代码
exit sub '如果没有错误运行至此退出过程
errtrap:
msgbox err.descript '获取错误信息
end sub
追问
谢谢您赐教 初学VB 程序等还是很不规范的 
希望您能帮我指出代码编写的是否有逻辑错误,从而导致运行中的问题
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友8ed3f27e9
2011-05-04
知道答主
回答量:22
采纳率:0%
帮助的人:12.9万
展开全部
Recordset设置为adOpenDynamic 就行了吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
飞扬短信
2011-05-02
知道答主
回答量:16
采纳率:0%
帮助的人:2.7万
展开全部
用中段调试一下,看出现的程序段在哪个语句。
追问
谢谢你的回答,错误显示在While (Adodc1.Recordset.EOF = False)该句中
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式