| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1836 人关注过本帖
标题:[求助]错误:在获得新的行句柄之前,必须释放所有的行句柄。
只看楼主 加入收藏
dolphin1984
Rank: 1
等 级:新手上路
帖 子:59
专家分:0
注 册:2005-11-19
收藏
 问题点数:0 回复次数:15 
[求助]错误:在获得新的行句柄之前,必须释放所有的行句柄。
<%
var id1 = id+1;
var rs1 = Server.CreateObject("ADODB.RECORDSET");
sql1 = "Select * From Messages Where MessageID ="+id1;
rs1.Open(sql1,Conn,2,4);
while(!rs1.Eof){
rs1("MessageID") = rs1("MessageID")-1;
rs1.MoveNext();
}
%>

在最后一行rs1.MoveNext();出错:
错误类型:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E25)
在获得新的行句柄之前,必须释放所有的行句柄。

希望实现每个MessageID都可以减去1的操作~~
怎么回事?
怎么改呢??高手求助~~
提前谢谢了~~

[此贴子已经被作者于2006-3-29 21:23:47编辑过]

搜索更多相关主题的帖子: 句柄 Microsoft MessageID var 
2006-03-29 21:16
dolphin1984
Rank: 1
等 级:新手上路
帖 子:59
专家分:0
注 册:2005-11-19
收藏
得分:0 
关于
rs1.Open(sql1,Conn,2,4);
中的参数
我查了课件
(sql1,Conn,打开方式,锁定类型)
打开方式:
0、 默认值,记录集只能向前移动
1、 记录集可以前后移动,并能同步反映自它创建后其它用户所作的修改和删除,但不能反映新增加的记录
2、 记录集可以前后移动,并能同步反映自它创建后其它用户所作的任何操作
3、 记录集可以前后移动,但不能同步反映自它创建后其它用户所作的任何操作
锁定类型:
1、 记录只读,不能更新
2、 编辑记录开始立刻锁定,直到提交给数据提供者
3、 一次锁定一条记录,只有调用Update方法时才锁定记录
4、 允许同时更新多条记录

我想我要更新多条记录
所以锁定类型应该为4吧
打开方式中2为权限最多的
可是为什么还是出错呢??????那里错了呢
为什么在移向下一条记录时说我没有释放句柄??
什么是句柄??怎么释放???

2006-03-29 21:21
dolphin1984
Rank: 1
等 级:新手上路
帖 子:59
专家分:0
注 册:2005-11-19
收藏
得分:0 
……
高手帮我看看

2006-03-29 21:41
rainic
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:2367
专家分:0
注 册:2005-8-9
收藏
得分:0 
<%
var id1 = id+1;
var rs1 = Server.CreateObject("ADODB.RECORDSET");
sql1 = "Select * From Messages Where MessageID ="+id1;
rs1.Open(sql1,Conn,2,4);
while(!rs1.Eof){
rs1("MessageID") = rs1("MessageID")-1;
rs1.update '加上这句看看行不
rs1.MoveNext();
}
%>

2006-03-29 21:45
dolphin1984
Rank: 1
等 级:新手上路
帖 子:59
专家分:0
注 册:2005-11-19
收藏
得分:0 
还是一样的错
错误类型:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E25)
在获得新的行句柄之前,必须释放所有的行句柄。

你说我应该用什么方式打开数据库呢??我是不是不应该选2,4呢??
错误还是出在那一行 rs1.MoveNext();

呵 谢谢你啊~~~

2006-03-29 21:49
yms123
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:209
帖 子:12488
专家分:19042
注 册:2004-7-17
收藏
得分:0 
<%
var id1 = id+1;
sql1 = "Update Messages Set MessageID=MessageID-1 Where MessageID ="+id1;
Conn.Execute(sql1);
%>
直接用SQL语句进行减1的操作呢?
2006-03-29 21:55
rainic
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:2367
专家分:0
注 册:2005-8-9
收藏
得分:0 
<%
var id1 = id+1;
var rs1 = Server.CreateObject("ADODB.RECORDSET");
sql1 = "Select * From Messages Where MessageID ="+id1;
rs1.Open(sql1,Conn,1,3); '改成1,3试试咯
while(!rs1.Eof){
rs1("MessageID") = rs1("MessageID")-1;
rs1.update() '加上这句看看行不
rs1.MoveNext();
}
%>

2006-03-29 21:59
dolphin1984
Rank: 1
等 级:新手上路
帖 子:59
专家分:0
注 册:2005-11-19
收藏
得分:0 

6楼帅哥~~~
你那样只能实现将一条记录MessageID减1

可是我希望表中id1项之后的所有记录中的MessageID都减1
所以我用了while循环

你说怎么办呢???


2006-03-29 22:03
yms123
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:209
帖 子:12488
专家分:19042
注 册:2004-7-17
收藏
得分:0 
sql1 = "Update Messages Set MessageID=MessageID-1 Where MessageID ="+id1;
SQL语句是可以把符合条件的所有记录都进行-1操作的,不必非得用循环。
2006-03-29 22:08
dolphin1984
Rank: 1
等 级:新手上路
帖 子:59
专家分:0
注 册:2005-11-19
收藏
得分:0 
不是吧 变成1,3????
那不是只能向前移动rs了么 都不能操作数据库了~~

调试了 运行超慢~~

我换成2,3
结果只能将id1项的MessageID减一
下面的MessageID就不能实现减一 也就是说不能循环正确运行
晕~~
我这么说能理解我的意思吗~~我表达能力不行 ~~~

那该怎么改呀~~~~~~~~

2006-03-29 22:10
快速回复:[求助]错误:在获得新的行句柄之前,必须释放所有的行句柄。
数据加载中...
 
   



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

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