vb中的3021实时错误是怎么回事,我已经用EOF进行了判断,是ACCESS数据库。到最后一条记录后就会报这个

PrivateSubCommand5_Click()Ifrs.EOF=FalseThenrs.MoveNextCall填充题目Elsers.MoveLastCall填充题... Private Sub Command5_Click()
If rs.EOF = False Then
rs.MoveNext
Call 填充题目
Else
rs.MoveLast
Call 填充题目
MsgBox "已到最后一题", , "提示"
End If
End Sub
===============================
谢谢smxgxq的热心解答!我已经找到原因了,是由于rs.eof它是基于rs.movenext之后(也就是说最后一条记录之后),而我是需要没有rs.eof的最后一条来进行相关的操作.最后用AbsolutePosition进行位置判断解决.代码如下:
Private Sub Command5_Click()
'MsgBox rs.AbsolutePosition

If rs.AbsolutePosition = rs.RecordCount Then '通过记录位置与记录总数判断
MsgBox "已到最后一题", vbExclamation + vbOKOnly, "提示"
Command5.Enabled = False
Else
rs.MoveNext
Call clearchoose
Call 判断
Call 填充题目
Command4.Enabled = True
End If
End Sub
展开
 我来答
艾迪康乐园
2013-09-19 · TA获得超过491个赞
知道小有建树答主
回答量:493
采纳率:0%
帮助的人:657万
展开全部
VB6的 实时错误'3021',BOF或EOF中有一个是"真",或者信颤棚当前的记录以被删洞槐除

出现这种错误的原因有:
1、查找的数据库记录为空。这可以用 rs.RecordCount 来判断数据是否等于0
2、已经用MoveNext 命令移动至滑则数据库末尾后再次用MoveNext 命令.
这里不知道你的数据表结构,你在详细检查一下,以上量点你属于哪一点,就知道如何排错了。
估计是第一种可能性比较大。

祝你顺利!
更多追问追答
追问
是您说的第二种情况,但是我已经用IF先进行了判断,为什么还会这样呢。语句应该怎么写呢
追答
你的判断应该是正确的呀!
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式