当前位置: 代码迷 >> ASP >> 关于eof和bof的使用疑问,该如何处理
  详细解决方案

关于eof和bof的使用疑问,该如何处理

热度:281   发布时间:2012-02-07 17:45:36.0
关于eof和bof的使用疑问
if   not   (rs.eof   and   rs.bof)   then
'do   something
end   if
if   not   rs.eof   then
'do   something
end   if

1这两个判断有什么区别?
2使用第二种会产生问题么?
3如果使用第二种不会产生问题,那第一种写法是为什么?



------解决方案--------------------
是用来做判断的,意思是不是记录头也不是记录尾。
在查询数据库时这句话起到判断记录集是否为空,如果为空not(rs.bof and rs.eof)就是假值。程序就会不做下面的动作。如果没有这句话,当遇到记录为空的情况的时候,下面仍然输出就会使程序出错,无法运行。

其中rs.bof是记录集rs的记录头,rs.eof是记录集rs的记录尾.
------解决方案--------------------
BOF 指示当前记录位置位于 Recordset 对象的第一个记录之前。

EOF 指示当前记录位置位于 Recordset 对象的最后一个记录之后。
返回值

BOF 和 EOF 属性返回布尔型值。

说明

使用 BOF 和 EOF 属性可确定 Recordset 对象是否包含记录,或者从一个记录移动到另一个记录时是否超出 Recordset 对象的限制。

如果当前记录位于第一个记录之前,BOF 属性将返回 True (-1),如果当前记录为第一个记录或位于其后则将返回 False (0)。

如果当前记录位于 Recordset 对象的最后一个记录之后 EOF 属性将返回 True,而当前记录为 Recordset 对象的最后一个记录或位于其前,则将返回 False。

如果 BOF 或 EOF 属性为 True,则没有当前记录。

如果打开没有记录的 Recordset 对象,BOF 和 EOF 属性将设置为 True,而 Recordset 对象的 RecordCount 属性设置为零。打开至少包含一条记录的 Recordset 对象时,第一条记录为当前记录,而 BOF 和 EOF 属性为 False。
------解决方案--------------------
TO:devms() 我是在网上找的帖子哈!呵呵!接点分!不容易啊!

说到GetRows() 我到是经常用GetString()

Function RsTable(RS)
Dim HTML
If Rs.RecordCount> 0 Then
HTML = " <table cellspacing= '1 ' cellpadding= '2 ' align= 'center '> <tr> "
For Each Member In Rs.Fields
HTML = HTML & " <td bgcolor= '#ECE9D8 '> "&Member.name& " </td> "
Next
HTML = HTML & " </tr> <tr> <td> "
HTML = HTML & Rs.GetString(,, " </td> <td> ", " </td> </tr> <tr> <td> ")
HTML = HTML & " </td> </tr> </table> </div> "
HTML = HTML & " <hr /> <center> 共 "&Rs.RecordCount& " 条记录 </center> "
Else
HTML = HTML & " <center> 没有记录 </center> "
End If
RsTable = HTML
End Function

Function DoTotal(BeginDate,EndDate)
Conn.CursorLocation=3
Set Rs = Conn.Execute( "EXEC mm_Down_CD ' "&BeginDate& " ', ' "&EndDate& " ' ")
DoTotal = RsTable(RS)
Rs.Close
Set Rs=Nothing
End Function
------解决方案--------------------
我一般是直接取数据建立数据模型集合然后马上断开数据...
------解决方案--------------------
if not (rs.eof and rs.bof) then
'do something
end if
if not rs.eof then
'do something
end if

1这两个判断有什么区别?
一个是判断指针既不在前,也不在后,一个是只判断在后

2使用第二种会产生问题么?
看你里面的内容,如果你要倒着显示数据,显示一条,指针向前移一条,当然不行了,但一般我们都是按记录集的顺序来显示的,所以不会有大问题

3如果使用第二种不会产生问题,那第一种写法是为什么?
看第二点
  相关解决方案