各位老大,Microsoft VBScript 运行时错误 错误类型:ADODB.Recordset (0x800A0BCD) 这个问题如何解决呢?
各位老大,Microsoft VBScript 运行时错误 错误类型:ADODB.Recordset (0x800A0BCD) 这个问题如何解决呢?错误类型:
ADODB.Recordset (0x800A0BCD)
BOF 或 EOF 中有一个是“真”,或者当前的记录已被删除,所需的操作要求一个当前的记录。
/1/admin_chk.asp, 第 34 行
以上出错的是网站管理后台确认预约的页面,希望高手指点下,谢谢~(程序和有出错问题见附件)
以下是详细代码:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
<!--#include file="hotel.asp" -->
<!--#include file="include/is_admin.asp" -->
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>预约确认</title>
<style type="text/css">
<!--
@import url("style.css");
-->
</style>
</head>
<body>
<div align="center">
<table width="706" height="281" border="0" class="table_big">
<tr>
<td valign="top"><div align="center">
<!--#include file="include/admin_head.asp" -->
<%
dim preengage_id,rs_preengage,sql,rs_room,rs_cancel,datetime
'接收表单数据------------------
preengage_id=request("preengage_id")
'打开预约据库--------------------
set rs_preengage=server.CreateObject("adodb.recordset")
If preengage_id="" Then
'表单数据preengage_id为空,开始显示预约列表--------------
'此处要加入paid = 0条件来列出尚未付款的预约--------------
sql = "select * from preengage where paid = 0"
rs_preengage.open sql,hotel_conn,3,2
rs_preengage.movefirst
%>
<br>
<table width="584" border="0" class="table_small">
<tr>
<td colspan="6"> </td>
</tr>
<tr>
<td colspan="6" class="text_title"><div align="left">预约确认</div></td>
</tr>
<tr>
<td colspan="6" class="table_title"> </td>
</tr>
<tr class="text">
<td width="86"><div align="left">预约用户</div></td>
<td width="125" class="text"><div align="left">房间号</div></td>
<td width="89"><div align="left">预约日期</div></td>
<td width="89"><div align="left">预约时间</div></td>
<td width="61"><div align="left">费用</div></td>
<td width="104"><div align="left">操作</div></td>
</tr>
<%
while (not rs_preengage.eof)
%>
<tr class="text">
<td><div align="left"><%= rs_preengage("user_name") %></div></td>
<td class="text">
<div align="left">
<%
set rs_room=server.CreateObject("adodb.recordset")
sql = "select * from room where room_id=" & rs_preengage("room_id")
rs_room.open sql,hotel_conn,3,2
response.Write(rs_room("name"))
rs_room.close
%>
</div></td>
<td><div align="left"><%= rs_preengage("pyear") & "-" & rs_preengage("pmonth") & "-" & rs_preengage("pday") %></div></td>
<td><div align="left"><%= rs_preengage("beginhour") & ":00-" & (rs_preengage("beginhour")+1) & ":00" %></div></td>
<td><div align="left"><%= rs_preengage("cost") %></div></td>
<td><div align="left">[<a href="admin_chk.asp?preengage_id=<%= rs_preengage("preengage_id") %>">确认预约</a>][<a href="chkcancel.asp?preengage_id=<%= rs_preengage("preengage_id") %>">删除</a>]</div></td>
</tr>
<%
rs_preengage.movenext
wend
%>
<tr>
<td colspan="6"> </td>
</tr>
<tr>
<td colspan="6"> </td>
</tr>
</table>
<%
Else
'已提交preengage_id数据,开始更新预约表preengage的paid字段---------
sql = "select * from preengage where preengage_id=" & preengage_id
rs_preengage.open sql,hotel_conn,3,2
'如果预约不存在则提示错误信息------------------
if rs_preengage.eof or rs_preengage.bof then
response.Redirect("error.asp")
response.End()
end if
rs_preengage("paid")=1
rs_preengage.update
datetime= rs_preengage("pyear") & "-" & rs_preengage("pmonth") & "-" & rs_preengage("pday")
datetime=datetime & " " & rs_preengage("beginhour") & ":00-" & (rs_preengage("beginhour")+1) & ":00"
%>
<br>
<table width="488" border="0" class="table_small">
<tr>
<td> </td>
</tr>
<tr>
<td class="text_title"><div align="left">预约确认成功</div></td>
</tr>
<tr>
<td class="table_title"> </td>
</tr>
<tr>
<td class="text"><div align="left">成功确认ID为<%= rs_preengage("preengage_id") %>的预约,它是在<%= datetime %>的预约,费用为<%= rs_preengage("cost") %>元</div></td>
</tr>
<tr>
<td> </td>
</tr>
</table>
<% End If %>
<br>
</div></td>
</tr>
</table>
</div>
</body>
</html>
你也可以写成多表查询。
[[it] 本帖最后由 heyufu 于 2008-5-9 14:33 编辑 [/it]] rs_preengage.open sql,hotel_conn,3,2 后面加上
if rs_preengage.eof and rs.preengage.bof then
Response.Write ("没有找到需要的数据")
else
。。。。。。 '你后面的程序
end if 你的附件写的很不清楚,我没太看懂,能不能说说具体哪个程序出问题了? 错误就是标题上说的 检查你的表preengage 和表 room ,里面的room_id不一致,这才出现错误的
肯定是你删除room表时,没有把preengage对应的room_id一起删除而引起的 我把数据库的内容改了一下,现在运行是正常的,你再测试一下,我估计是删除时出的问题
[attach]34573[/attach] madpbpl 真厉害,我也看了半天都没有找到原因,看到你找的原因一试真是这样的,preengage中的room_id中有一个11在表room的room_id中不存在,删除11这个记录就好了,
回复 8# 的帖子
我刚才测试了一下还是会出错,跟前面一样;当管理员在管理端的房间维护模块删除房间(这个房间已经被预定过),当我单击预约确认模块后再刷新一下程序就出现错误;当我再登录客户端时,单击我的预约模块后再刷新一下程序就出现错误;
其实就是同你说的那样,当我删除掉room表的信息时,preengage表的对应信息没有同时删除,所以就出现了错误,不知道如何设置才能让两个表间相呼应及时删除
回复 10# 的帖子
dim room_id,sql,sql1,rs_del,conn'接收房间数据------------------
room_id=request("room_id")
if room_id="" then response.Redirect("error.asp")
'删除房间数据--------------------
set rs_del=server.CreateObject("adodb.recordset")
sql = "delete from room where room_id=" & room_id
conn.execute sql 第 23 行
sql1="deleete from preengage where room_id="& room_id
conn.execute sql1
rs_del.open sql,sql1,hotel_conn,3,2
'rs_del.open sql1,hotel_conn,1,1
'rs_del.close
'set rs_del=nothing
为什么运行是总是出现
Microsoft VBScript 运行时错误 (0x800A01A8)
缺少对象: ''
/1/del.asp, 第 23 行
[[it] 本帖最后由 yangziyang 于 2008-5-12 19:56 编辑 [/it]]
页:
[1]
