难道 if rs.eof and rs.bof then 和 if rs.bof and rs.eof then 不相等?!

chinareny 2002-04-15 06:40:06
我有一段代码如下:
rs.open strsql,strcn
if rs.bof and rs.eof then
A
else
B
end if
当我的 rs.recordcount<>0 时却执行了A处的代码!
而我将判断改为:
if rs.eof and rs.bof then
A
else
B
end if
时,相同条件下却执行的是B处的代码!

难道 if rs.eof and rs.bof then 和 if rs.bof and rs.eof then 不相等?!

微软在MSDN98中不是提到可以用判断rs.eof 和 rs.bof 是否指向相同来判断结果集是否为空吗?
...全文
135 24 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
chinareny 2002-04-18
  • 打赏
  • 举报
回复
哎!我也发现可能是风水不好!呵呵。

今天当我再次测试那个页面时,再也没有出现问题!

其实当时我也时不相信,因为微软的MSDN上也说是相等的!

不过很感谢大家这么关心!分马上就送出!
playmud 2002-04-18
  • 打赏
  • 举报
回复
准确地说呢,是显示器放反了,以后大家要注意这个问题。
zoze1026 2002-04-18
  • 打赏
  • 举报
回复
多多重起吧。
julyclyde 2002-04-18
  • 打赏
  • 举报
回复
可能作者的计算机放的方向不对。改个方向试试?风水的事……
eshao 2002-04-17
  • 打赏
  • 举报
回复
回去测试了一下,没有提问者的情况!
mexp说的完全正确
ro.eof and rs.bof ==========rs.bof and rs.eof
BrightEye 2002-04-17
  • 打赏
  • 举报
回复
to mexp(秦汉风):
<%
if rs.bof and rs.eof then
Response.Write "a1"
else
Response.Write "b1"
end if%>

<%
if rs.eof and rs.bof then
Response.Write "a2"
else
Response.Write "b2"
end if
%>
分别测试一下才能说明问题.你的测试好象没有意义啊!:)

julyclyde 2002-04-17
  • 打赏
  • 举报
回复
我也觉得应该是相等的
可能作者的计算机放的方向不对。改个方向试试?风水的事……
MeXP 2002-04-17
  • 打赏
  • 举报
回复
to BrightEye(问个不休)
我只想说明if rs.eof and rs.bof then 和 if rs.bof and rs.eof then 是相等的相等的,并未出现作者的情况
skyarea 2002-04-16
  • 打赏
  • 举报
回复

if rs.recordcount=0 then
A
else
B
end if
就不会有这样的问题了
MeXP 2002-04-16
  • 打赏
  • 举报
回复
补充
数据库无纪录时输出aa
数据库有记录时输出bb
test.mdb中只有表test
表中只有一个字段id
MeXP 2002-04-16
  • 打赏
  • 举报
回复
我刚用interdev调试 “单步” 跟踪过你的代码,很遗憾,输出为bb,代码如下:
<%
set conn=Server.CreateObject("adodb.connection")
set rs=Server.CreateObject("adodb.recordset")
connstr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&server.mappath("test.mdb")
conn.Open connstr
sql="select id from test"
rs.Open sql,conn,3,3
%>
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<body bgcolor="#FFFFFF" text="#000000">
<%
if rs.bof and rs.eof then
Response.Write "a"
else
Response.Write "b"
end if
if rs.eof and rs.bof then
Response.Write "a"
else
Response.Write "b"
end if
%>
</body>
</html>

win2000 pro
access 2000
mdac 2.6
interdev 6
Random 2002-04-16
  • 打赏
  • 举报
回复
如果你两次在执行判断之前记录集的状态完全一样,从逻辑上分析是不可能的。
chinareny 2002-04-16
  • 打赏
  • 举报
回复
不用这么客气,大家共同探讨嘛!我刚起步!
eshao 2002-04-16
  • 打赏
  • 举报
回复
现在我在网吧,没办法做
回去以后才能做,不好意思
MeXP 2002-04-16
  • 打赏
  • 举报
回复
我也认为是同样的,不加括号的判断有时不准,我曾遇到过,你先试试加上括号的
if ((rs.eof) and (rs.bof)) then=if ((rs.bof) and (rs.eof)) then
chinareny 2002-04-16
  • 打赏
  • 举报
回复
这个我知道啊!
我的问题是我的前后两个判断我认为应该是实现同样的功能!
可是在实际应用中却出现了不同的走向?
我想知道程序在作这个判断的时候到底是怎样进行的?
谢谢
eshao 2002-04-16
  • 打赏
  • 举报
回复
bof是指rs在第一个纪录
eof是指纪录在最后一个纪录,表示为空

chinareny 2002-04-16
  • 打赏
  • 举报
回复
我不是说一会儿真,一会儿假
而是如果用第一种方法的时候始终是不行的!
没有人可以帮我吗?
MeXP 2002-04-15
  • 打赏
  • 举报
回复
我想改为这样就相等吧(也许是瞎猜)
if ((rs.eof) and (rs.bof)) then=if ((rs.bof) and (rs.eof)) then
zoze1026 2002-04-15
  • 打赏
  • 举报
回复
你执行了几遍?
我想还是要从数据库和sql语句上查问题,因为if 的条件只有 “真” 或 “假” 两个可能,一会儿真,一会儿假,不可能是条件本身的问题。
加载更多回复(4)

28,409

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧