难道 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 是否指向相同来判断结果集是否为空吗?
...全文
129 24 打赏 收藏 转发到动态 举报
写回复
用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)
VB 使用DAO对象浏览数据库   rs.MoveFirst '移动记录指针   Command1.Enabled = False '使第一条和上一条按钮不可用   Command2.Enabled = False   Command3.Enabled = True   Command4.Enabled = True   refreshdb rs '调用自定义方法刷新   End Sub   Private Sub Command2_Click()   If rs.BOF Then'判断是否到了第一条记录之前    Command1.Enabled = False'使第一条和上一条按钮不可用    Command2.Enabled = False   Else    rs.MovePrevious   End If   Command3.Enabled = True   Command4.Enabled = True   refreshdb rs   End Sub   Private Sub Command3_Click()   Command1.Enabled = True   Command2.Enabled = True   If rs.EOF Then'判断是否到了最后一条记录之后    Command3.Enabled = False'使下一条和最后一条按钮不可用    Command4.Enabled = False   Else    rs.MoveNext   End If   refreshdb rs   End Sub   Private Sub Command4_Click()   rs.MoveLast   Command1.Enabled = True   Command2.Enabled = True   Command3.Enabled = False '使下一条和最后一条按钮不可用   Command4.Enabled = False   refreshdb rs   End Sub   Private Sub Command5_Click()   End   End Sub   Private Sub refreshdb(rst As Recordset)'自定义刷新方法   Dim i As Integer   If rst.EOF Or rst.BOF Then    Exit Sub   End If   For i = 0 To 4    If IsNull(rst.Fields(i)) Then '判断是否有空值    Text1(i).Text = ""    Else    Text1(i).Text = rst.Fields(i).Value '为控件数组赋值    End If   Next i   End Sub
网上商城 <% dim admin,UserPassword,passcode admin=FormatSQL(replace(trim(request.form("admin")),"'","")) UserPassword=md5(FormatSQL(replace(trim(request.Form("UserPassword")),"'",""))) if admin="" or UserPassword="" then response.Write "<script LANGUAGE='javascript'>alert('登录失败!请检查您的登录名和密码!');history.go(-1);alert('登录失败!验证码必须是数字,请正确填写!');history.go(-1);rs=server.CreateObject("adodb.recordset") rs.Open "select * from [admin] where UserPassword='"&UserPassword&"' and admin='"&admin&"' " ,conn,1,1 if rs.bof and rs.eof then response.write "<script LANGUAGE='javascript'>alert('你的用户名或者密码错误,登录失败!');history.go(-1);rs.Close set rs=nothing conn.Close set conn=nothing response.end else if passcode<>Session("GetCode") then response.Write "<script LANGUAGE='javascript'>alert('登录失败!验证码错误!');history.go(-1);rs.Close set rs=nothing conn.Close set conn=nothing response.end end if if UserPassword=rs("UserPassword") and admin=rs("admin") then session("admin")=trim(rs("admin")) session("rank")=int(rs("rank")) session.Timeout=300 response.Cookies("Buy2Buy")("admin")=trim(request.form("admin")) rs.Close set rs=nothing conn.Close set conn=nothing response.Redirect "main.asp" else response.write "<script LANGUAGE='javascript'>alert('你的密码错误,登录失败!');history.go(-1);rs.Close set rs=nothing conn.Close set conn=nothing end if end if %>
<% if request.cookies("username")="" then response.redirect "login.asp" end if function htmlencode(str) htmlencode=replace(replace(str,chr(13),"
"),"'","''") end function dim rs,sql set rs=server.createobject("adodb.recordset") if request.querystring="add" then if request("title")="" then response.write "
没有填写完必须的内容!新闻没有保存...
" else sql="select * from news where id is null" rs.open sql,conn,1,3 rs.addnew rs("cataid")=request("cataid") rs("title")=request("title") rs("adddate")=date() rs("content")=htmlencode(request("content")) rs("hits")=1 rs.update rs.close response.write "
新闻已经成功保存了...
" end if end if %> 添加新闻
新闻类别:
新闻标题:
新闻内容:
[返回主页]

28,391

社区成员

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

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