粗略一看,你的代码中确实存在记录集为空但仍然执行的漏洞,例如你的下面两句:
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,直到重新定位当前记录为止。
if rs.eof and rs.bof then
Response.Write "无信息"
else
.......