CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Web 开发 >  ASP

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

楼主chinareny(编程浪子)2002-04-15 18:40:06 在 Web 开发 / ASP 提问

我有一段代码如下:  
  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   是否指向相同来判断结果集是否为空吗? 问题点数:20、回复次数:24Top

1 楼chinareny(编程浪子)回复于 2002-04-15 18:59:24 得分 0

怎么没人说话啊!Top

2 楼babyt(阿泰)回复于 2002-04-15 19:40:30 得分 0

你得到的rs.recordcount是不是等于-1啊?Top

3 楼zhuoren1(allok)回复于 2002-04-15 19:41:38 得分 0

我测试了一下,没发现你说得毛病,用下面的代码试一下  
  if   rs.EOF   then  
  Response.Write   "eof<br>"  
  end   if  
  if   rs.BOF   then  
  Response.Write   "bof<br>"  
  end   if  
  if   rs.EOF   and   rs.BOF   then  
  Response.Write   "eof-bof<br>"  
  end   if  
  if   rs.EOF   and   rs.BOF   then  
  Response.Write   "eof-bof-1<br>"  
  else  
  Response.Write   "eof-bof-2"  
  end   if  
  if   rs.EOF   and   rs.BOF   then  
  Response.Write   "bof-eof-1<br>"  
  else  
  Response.Write   "bof-eof-2<br>"  
  end   if  
  Response.Write   rs.RecordCountTop

4 楼chinareny(编程浪子)回复于 2002-04-15 20:17:23 得分 0

我得到的recordcount不是等于-1  
   
  我试着换了rs.open参数,当结果等于-1时也是那样!  
   
  有人可以从结果集和游标方面进行一下说明吗?Top

5 楼zoze1026(木鱼)回复于 2002-04-15 22:15:18 得分 0

你执行了几遍?  
  我想还是要从数据库和sql语句上查问题,因为if   的条件只有   “真”   或   “假”   两个可能,一会儿真,一会儿假,不可能是条件本身的问题。Top

6 楼MeXP(秦汉风)回复于 2002-04-15 23:43:40 得分 0

我想改为这样就相等吧(也许是瞎猜)  
  if   ((rs.eof)   and   (rs.bof))   then=if   ((rs.bof)   and   (rs.eof))   thenTop

7 楼chinareny(编程浪子)回复于 2002-04-16 20:48:23 得分 0

我不是说一会儿真,一会儿假  
  而是如果用第一种方法的时候始终是不行的!  
  没有人可以帮我吗?Top

8 楼eshao(MrXie)回复于 2002-04-16 20:58:56 得分 0

bof是指rs在第一个纪录  
  eof是指纪录在最后一个纪录,表示为空  
   
  Top

9 楼chinareny(编程浪子)回复于 2002-04-16 21:05:54 得分 0

这个我知道啊!  
  我的问题是我的前后两个判断我认为应该是实现同样的功能!  
  可是在实际应用中却出现了不同的走向?  
  我想知道程序在作这个判断的时候到底是怎样进行的?  
  谢谢  
  Top

10 楼MeXP(秦汉风)回复于 2002-04-16 21:10:29 得分 0

我也认为是同样的,不加括号的判断有时不准,我曾遇到过,你先试试加上括号的  
  if   ((rs.eof)   and   (rs.bof))   then=if   ((rs.bof)   and   (rs.eof))   then  
  Top

11 楼eshao(MrXie)回复于 2002-04-16 21:13:09 得分 0

现在我在网吧,没办法做  
  回去以后才能做,不好意思Top

12 楼chinareny(编程浪子)回复于 2002-04-16 21:18:22 得分 0

不用这么客气,大家共同探讨嘛!我刚起步!Top

13 楼Random(随便)回复于 2002-04-16 21:37:37 得分 0

如果你两次在执行判断之前记录集的状态完全一样,从逻辑上分析是不可能的。Top

14 楼MeXP(秦汉风)回复于 2002-04-16 21:41:39 得分 12

我刚用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   6Top

15 楼MeXP(秦汉风)回复于 2002-04-16 21:44:03 得分 0

补充  
  数据库无纪录时输出aa  
  数据库有记录时输出bb  
  test.mdb中只有表test  
  表中只有一个字段idTop

16 楼skyarea(Feel)回复于 2002-04-16 22:49:38 得分 0

用  
  if   rs.recordcount=0   then  
  A  
  else  
  B  
  end   if  
  就不会有这样的问题了Top

17 楼BrightEye(男儿当自强,靠别人不如靠自己)回复于 2002-04-17 09:01:11 得分 0

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  
  %>  
  分别测试一下才能说明问题.你的测试好象没有意义啊!:)  
   
  Top

18 楼MeXP(秦汉风)回复于 2002-04-17 15:07:23 得分 0

to   BrightEye(问个不休)    
  我只想说明if   rs.eof   and   rs.bof   then   和   if   rs.bof   and   rs.eof   then   是相等的相等的,并未出现作者的情况Top

19 楼julyclyde(Java初学(大学不教只好自己学))回复于 2002-04-17 19:09:04 得分 0

我也觉得应该是相等的  
  可能作者的计算机放的方向不对。改个方向试试?风水的事……Top

20 楼eshao(MrXie)回复于 2002-04-17 22:41:05 得分 8

回去测试了一下,没有提问者的情况!  
  mexp说的完全正确  
  ro.eof   and   rs.bof   ==========rs.bof   and   rs.eofTop

21 楼julyclyde(Java初学(大学不教只好自己学))回复于 2002-04-18 13:24:27 得分 0

可能作者的计算机放的方向不对。改个方向试试?风水的事……  
  Top

22 楼zoze1026(木鱼)回复于 2002-04-18 15:28:42 得分 0

多多重起吧。Top

23 楼playmud((猪头流氓)(抵制日货)(热烈庆祝火箭输球))回复于 2002-04-18 16:17:20 得分 0

准确地说呢,是显示器放反了,以后大家要注意这个问题。Top

24 楼chinareny(编程浪子)回复于 2002-04-18 20:41:32 得分 0

哎!我也发现可能是风水不好!呵呵。  
   
  今天当我再次测试那个页面时,再也没有出现问题!  
   
  其实当时我也时不相信,因为微软的MSDN上也说是相等的!  
   
  不过很感谢大家这么关心!分马上就送出!Top

相关问题

  • 关于equals()``为什么会不相等?
  • jsp中如何判断两个字符串不相等?
  • n简单的问题,怎么不相等哪?(jsp)
  • 这两个字符串为什么不相等?
  • 每行的数据列不相等的处理方法?
  • 高手请进!!!关于多表不相等连接的问题!(急急急……)
  • 怎么检查?有N个input怎么判断互不相等最简单?
  • 一数与MEMO1中一列数对比.当两数相等,在MEMO2中写入"相等";当两数不相等,在MEMO2中写入"不相等";到底怎么写,我怎么会写出一列不相等,只要
  • 简单问题:变量a,b,c,d,e,f的值互相不相等的条件如何写?
  • 小妹这里有个问题请教:为什么这两个字符串不相等?

关键词

  • bof
  • rs
  • eof
  • then

得分解答快速导航

  • 帖主:chinareny
  • MeXP
  • eshao

相关链接

  • Web开发类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo