总是提示实时错误‘3021’,BOF或EOF中有一个是“真”或者当前记录已被删除,所需操作要求当前记录。

DimconnAsNewADODB.ConnectionDimrsAsNewADODB.RecordsetDimsqlAsStringDimconnstrAsString... Dim conn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim sql As String
Dim connstr As String
connstr = "provider=microsoft.jet.oledb.4.0;data source=shujuku.mdb"
sql = "select * from 会计师表 where 用户名='" & Text1 & "'"
conn.Open (connstr)
rs.Open sql, conn, 3, 3
rs.MoveFirst
While rs("用户名").Value <> Text1.Text Or rs("密码").Value <> Text2.Text
rs.MoveNext
Wend
If (rs.BOF Or rs.EOF) Then
Exit Sub
MsgBox "你输入的用户名密码不正确或者不存在,请重新输入", vbOKOnly, "提示"
Text1.SetFocus

Else
Form3.Show
Form1.Hide
End If

End Sub
输入正确的密码和用户名已连接数据库成功,这是输入错误的用用户名或密码时的提示! 错误指向“rs.MoveFirst”这一句!
展开
 我来答
瑞安阿芳
2010-08-14 · TA获得超过1947个赞
知道小有建树答主
回答量:749
采纳率:100%
帮助的人:904万
展开全部
你是想查询用户名与密码是否正确,但是在while 里没有判断记录指针是否到底,这样一直循环就一定出错,再说你的查询里用户名已经等于text1.text了,你还在while条件里判断 rs("用户名").Value <> Text1.Text 是完全没必要的.

实际上这个用户名与密码查询都放在查询语句里,比你自己循环要快得多.
我的写法:

sql = "select * from 会计师表 where 用户名='" & Text1 & "' and 密码='" & Text2.text & "'"
conn.Open (connstr)
rs.Open sql, conn, 3, 3
If (rs.BOF and rs.EOF) Then '查询结果为空
MsgBox "你输入的用户名不存在或者密码不正确,请重新输入", vbOKOnly, "提示"
Text1.SetFocus
Exit Sub
Else
Form3.Show
Form1.Hide
End If
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式