注册 登录
编程论坛 ASP技术论坛

ASP也闹鬼了。。。。?

boyfuture 发布于 2007-10-03 21:04, 1066 次点击

我查询不到内容时,我设了一个处理,但是有时这个处理能工作,有时候却不能工作,好奇怪,像闹鬼了啊,怎么回事啊?
<!--#include file="connections/conn.asp" -->
<%set rs=Server.CreateObject("ADODB.RecordSet")
sql="SELECT * FROM checkinout WHERE checkid="&request("id")
rs.open sql,conn,1,3%>
<%if rs.eof and rs.bof then%>
<script language="javascript">
alert("该岗位已经收费,请检查后重新操作!");
window.history.back();
</script>
<%end if%>

执行后,提示。。。
错误类型:
ADODB.Field (0x80020009)
BOF 或 EOF 中有一个是“真”,或者当前的记录已被删除,所需的操作要求一个当前的记录。
/ao/humanresourcedep/signagreement.asp


18 回复
#2
madpbpl2007-10-03 21:15

这样的写法有点问题,要做一下调整
<%if rs.eof and rs.bof then%>
<script language="javascript">
alert("该岗位已经收费,请检查后重新操作!");
window.history.back();
</script>
<%end if%>
改成
<%
if rs.eof and rs.bof then
response.write "<script language='javascript'>alert('该岗位已经收费,请检查后重新操作!');window.history.back();</script>" '这句是一行写的
else
%>
<%
..... '如果sql语句成立,你想显示的内容
%>
<%
end if
%>

#3
skydragon2192007-10-03 21:26
应该是or吧!?
即:if rs.eof or rs.bof then

至于如何输出提示信息,
个人认为对于上面的两种写法应该都是正确的.

[此贴子已经被作者于2007-10-3 21:31:19编辑过]

#4
boyfuture2007-10-03 22:03

各位大虾,上述的分析还是无法正常使用!都不行!请再想想办法吧!

#5
madpbpl2007-10-03 22:15
以下是引用boyfuture在2007-10-3 22:03:51的发言:

各位大虾,上述的分析还是无法正常使用!都不行!请再想想办法吧!

报什么错吗?还是报一楼一样的错?

#6
boyfuture2007-10-03 22:26
以下是引用madpbpl在2007-10-3 22:15:22的发言:

报什么错吗?还是报一楼一样的错?

错误类型:
ADODB.Field (0x80020009)
BOF 或 EOF 中有一个是“真”,或者当前的记录已被删除,所需的操作要求一个当前的记录。
/ao/humanresourcedep/signagreement.asp

#7
skydragon2192007-10-03 23:03
没有理由啊!~~~~~~~~~~~~

<%if rs.eof or rs.bof then '这里就是判断"BOF 或 EOF 中有一个是“真”",即返回true,执行下面的语句%>
<script language="javascript">
alert("该岗位已经收费,请检查后重新操作!");
window.history.back();
</script>
<%end if%>

你检查一下真的是这句的错误吗????
#8
madpbpl2007-10-03 23:14
楼主的错误原因是因为你要找的id不存在或是已经删除的原因
所以你要加上
if rs.eof and rs.bof then
...... '这里是找不到传递过来id时要做的操作
else
.... '这里是找到传递过来id时要做的操作
end if


#9
shaoli42612007-10-03 23:26

同意楼上的!

#10
boyfuture2007-10-04 15:41
以下是引用madpbpl在2007-10-3 23:14:48的发言:
楼主的错误原因是因为你要找的id不存在或是已经删除的原因
所以你要加上
if rs.eof and rs.bof then
...... '这里是找不到传递过来id时要做的操作
else
.... '这里是找到传递过来id时要做的操作
end if


我原来就是这样定义的,不知为什么不能执行?你看看这一句!
<!--#include file="connections/conn.asp" -->
<%set rs=Server.CreateObject("ADODB.RecordSet")
sql="SELECT * FROM matchlist,checkinout WHERE matchlist.matchidcard=checkinout.checkidcard and matchid="&request("id")
rs.open sql,conn,1,3
if rs.eof and rs.bof then%>'不是有这句话吗?
<script language="javascript">
alert("该岗位已经收费,请检查后重新操作!");
window.history.back();
</script><%end if%>
如果id存在则能正常显示,如果没有,则无法执行相关的语句rs.eof以上有什么问题吗?

[此贴子已经被作者于2007-10-4 16:10:28编辑过]

#11
shaoli42612007-10-04 16:01
<%set rs=Server.CreateObject("ADODB.RecordSet")
sql="SELECT * FROM matchlist,checkinout WHERE matchlist.matchidcard=checkinout.checkidcard and matchid="&request("id")
rs.open sql,conn,1,3
if rs.eof or rs.bof then
response.write"<script language='javascript'>alert('该岗位已经收费,请检查后重新操作!'); window.history.back();</script>"
else
response.write"<script language='javascript'>alert('数据库中没有你所查数据,请返回!'); window.history.back();</script>"
end if%>
#12
boyfuture2007-10-04 21:14
错误类型:
ADODB.Field (0x80020009)
BOF 或 EOF 中有一个是“真”,或者当前的记录已被删除,所需的操作要求一个当前的记录。
/ao/humanresourcedep/signagreement.asp

各位大虾,上述就是测试的结果!以下是可以使用的内容,大家帮我分析下,这和我出问题的结构内容完全一样:
Set rs= Server.CreateObject("ADODB.Recordset")
sql="SELECT * FROM 企业网上招聘,业务公司档案 WHERE 企业网上招聘.企业编号=业务公司档案.用人单位编号 and 单位名称= '"&company&"' "
rs.open SQL,conn,1,3
%>
<%if rs.eof then %>
<script language="javascript">
alert("您还未发布招聘信息,请完成发布后再执行约见面试,如有疑问请致电69691196!");
window.history.back();
</script>
<%End If%>
还望大家能继续考察一下!
#13
boyfuture2007-10-04 21:58
实在不好意思,我放到互联网上测试,却正常了,是不是电脑中毒了?为什么在本地测试就提示错误?很奇怪的是,别的内容却能正常测试?不过,非常感谢大家的关注。我还是想解决为何本地无法测试通过呢?有兴趣的朋友请继续给个答案!谢谢!
#14
madpbpl2007-10-04 23:27

有时候有的问题需要放到网上,在本地是看不出问题的,这涉及到一个客户端、服务器端的问题。
楼主这个问题应该再检查一下,在本地调试也应该是正常的。你可以进一步研究一下到底哪里出错了。

#15
boyfuture2007-10-05 18:35
以下是引用madpbpl在2007-10-4 23:27:23的发言:

有时候有的问题需要放到网上,在本地是看不出问题的,这涉及到一个客户端、服务器端的问题。
楼主这个问题应该再检查一下,在本地调试也应该是正常的。你可以进一步研究一下到底哪里出错了。

老大,你觉得问题在哪?我可是怎么也看不出来,几乎完全相同的代码在另外一个网页里面使用都很正常,但在这个网页里却无法执行,似乎他非要找到一个记录集相匹配,是不是与其他因素有关?再一个你的QQ群无法加入啊?谢谢啊,希望能有个结果!

#16
wcwtitxu2007-10-06 05:14
[CODE]

<% If rs.eof And rs.bof Then %>
<script language="javascript">
alert("该岗位已经收费,请检查后重新操作!");
window.history.back();
</script>
<%
rs.Close
Set rs = Nothing
conn.Close
Set conn = Nothing
Response.End
' 你应该释放资源,停止服务器继续执行网页, 而不是等待浏览器执行到 "window.history.back();"
End If %>

[/CODE]
#17
boyfuture2007-10-07 19:35
以下是引用wcwtitxu在2007-10-6 5:14:47的发言:
[CODE]

<% If rs.eof And rs.bof Then %>
<script language="javascript">
alert("该岗位已经收费,请检查后重新操作!");
window.history.back();
</script>
<%
rs.Close
Set rs = Nothing
conn.Close
Set conn = Nothing
Response.End
' 你应该释放资源,停止服务器继续执行网页, 而不是等待浏览器执行到 "window.history.back();"
End If %>

[/CODE]

兄弟真是奇才!问题解决了,很奇怪为什么有的可以有的却不行,还是你厉害!谢谢!

1