标题:各位老大,Microsoft VBScript 运行时错误 错误类型:ADODB.Recordset (0x8 ...
只看楼主
yangziyang
Rank: 1
来 自:广东
等 级:新手上路
帖 子:8
专家分:0
注 册:2007-4-20
 问题点数:0 回复次数:9 
各位老大,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">&nbsp;</td>
            </tr>
            <tr>
              <td colspan="6" class="text_title"><div align="left">预约确认</div></td>
            </tr>
            <tr>
              <td colspan="6" class="table_title">&nbsp;</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">&nbsp;</td>
            </tr>
            <tr>
              <td colspan="6">&nbsp;</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>&nbsp;</td>
            </tr>
            <tr>
              <td class="text_title"><div align="left">预约确认成功</div></td>
            </tr>
            <tr>
              <td class="table_title">&nbsp;</td>
            </tr>
            <tr>
              <td class="text"><div align="left">成功确认ID为<%= rs_preengage("preengage_id") %>的预约,它是在<%= datetime %>的预约,费用为<%= rs_preengage("cost") %>元</div></td>
            </tr>
            <tr>
              <td>&nbsp;</td>
            </tr>
          </table>
          <% End If %>
          <br>
      </div></td>
    </tr>
  </table>
</div>
</body>
</html>

jiudian.rar (121.71 KB) 系统



程序出现的问题.rar (580 Bytes) 出现的有关问题

搜索更多相关主题的帖子: Microsoft Recordset VBScript ADODB 老大 
2008-05-08 19:06
heyufu
Rank: 1
等 级:新手上路
帖 子:86
专家分:0
注 册:2007-7-26
得分:0 
两句SQL语句,分别定义为SQL1与SQL2 试试看行不?
你也可以写成多表查询。

[[it] 本帖最后由 heyufu 于 2008-5-9 14:33 编辑 [/it]]

2008-05-09 14:30
madpbpl
Rank: 4
等 级:贵宾
威 望:11
帖 子:2876
专家分:244
注 册:2007-4-5
得分:0 
rs_preengage.open sql,hotel_conn,3,2   后面加上
if rs_preengage.eof and rs.preengage.bof then
Response.Write ("没有找到需要的数据")
else
。。。。。。         '你后面的程序
end if
2008-05-09 15:32
madpbpl
Rank: 4
等 级:贵宾
威 望:11
帖 子:2876
专家分:244
注 册:2007-4-5
得分:0 
你的附件写的很不清楚,我没太看懂,能不能说说具体哪个程序出问题了?
2008-05-10 15:09
yuwenxiang
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2008-3-24
得分:0 
错误就是标题上说的
2008-05-10 15:37
madpbpl
Rank: 4
等 级:贵宾
威 望:11
帖 子:2876
专家分:244
注 册:2007-4-5
得分:0 
检查你的表preengage 和表 room ,里面的room_id不一致,这才出现错误的
肯定是你删除room表时,没有把preengage对应的room_id一起删除而引起的
2008-05-10 15:56
madpbpl
Rank: 4
等 级:贵宾
威 望:11
帖 子:2876
专家分:244
注 册:2007-4-5
得分:0 
我把数据库的内容改了一下,现在运行是正常的,你再测试一下,我估计是删除时出的问题
jiudian.rar (122.05 KB)
2008-05-10 16:01
wangkq936
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2008-4-18
得分:0 
madpbpl 真厉害,我也看了半天都没有找到原因,看到你找的原因一试真是这样的,preengage中的room_id中有一个11在表room的room_id中不存在,删除11这个记录就好了,
2008-05-10 17:15
yangziyang
Rank: 1
来 自:广东
等 级:新手上路
帖 子:8
专家分:0
注 册:2007-4-20
得分:0 
回复 8# 的帖子
我刚才测试了一下还是会出错,跟前面一样;当管理员在管理端的房间维护模块删除房间(这个房间已经被预定过),当我单击预约确认模块后再刷新一下程序就出现错误;
当我再登录客户端时,单击我的预约模块后再刷新一下程序就出现错误;
其实就是同你说的那样,当我删除掉room表的信息时,preengage表的对应信息没有同时删除,所以就出现了错误,不知道如何设置才能让两个表间相呼应及时删除
2008-05-10 21:08
yangziyang
Rank: 1
来 自:广东
等 级:新手上路
帖 子:8
专家分:0
注 册:2007-4-20
得分:0 
回复 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]]

jiudian.rar (121.8 KB) 5.12

2008-05-11 14:43



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-213209-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.264660 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved