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

来源:百度知道 编辑:UC知道 时间:2024/06/24 02:04:12
<body>
<form id="form1" name="form1" method="POST" action="<%=MM_editAction%>">
<table width="300" border="1" align="center">
<tr>
<td width="94"> </td>
<td width="190"><a href="MainPage">返回</a></td>
</tr>
<% If Not rsmessage.EOF Or Not rsmessage.BOF Then %>
<tr>
<td><div align="center">信息编号</div></td>
<td><label>
<input name="txtID" type="text" id="txtID" value="<%=(rsMessage.Fields.Item("MsgID").Value)%>" />
</label></td>
</tr>
<tr>
<td><div align="center">信息标题</div></td>
<td><

粗略一看,你的代码中确实存在记录集为空但仍然执行的漏洞,例如你的下面两句:
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
.......