高手救我!BOF 或 EOF 中有一个是“真”,或者当前的记录已被删除,所需的操作要求一个当前的记录

2025-01-01 16:28:51
推荐回答(2个)
回答1:

粗略一看,你的代码中确实存在记录集为空但仍然执行的漏洞,例如你的下面两句:
If Not rsmessage.EOF Or Not rsmessage.BOF Then 中的OR应该改为AND才行,后面的代码你自己检查一下看是否也存在这样的漏洞。

看来你需要了解一下EOF和BOF是干什么用的,我给你些资料你看看:

BOF指示当前记录的位置在 Recordset 对象的第一个记录之前。
EOF指示当前记录的位置在 Recordset 对象的最后一个记录之后。

使用 BOF 和 EOF 属性确定 Recordset 对象是否包含记录,或者从一个记录移动到另一个记录时是否超出 Recordset 对象的限制。
如果当前记录位于第一个记录之前,则 BOF 属性返回 True ()。
如果当前记录是第一个记录或位于第一个记录之后,则返回 False。
如果当前记录位于最后一个记录之后,则 EOF 属性返回 True。
如果当前记录是最后一个记录或位于最后一个记录之前,则返回False。
如果 BOF 或 EOF 属性为 True,则没有当前记录。

如果打开不包含记录的 Recordset 对象,则 BOF 和 EOF 属性被设置为 True,Recordset 对象的 RecordCount 属性设置为零。当打开至少包含一个记录的 Recordset 对象时,第一个记录是当前记录,并且 BOF 和 EOF 属性均为 False。

如果删除 Recordset 对象中保留的最后一个记录,BOF 和 EOF 属性将保持 False,直到重新定位当前记录为止。

回答2:

if rs.eof and rs.bof then
Response.Write "无信息"
else
.......