CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VB >  数据库(包含打印,安装,报表)

MyConnection.Execute執行一個返回多個RecordSet的SQL語句,為何會出現這樣的錯誤?

楼主leolan(史留香)2004-12-03 15:53:10 在 VB / 数据库(包含打印,安装,报表) 提问

用cnn.Execute來執行一個返回多個recordset的stored   procdure,執行成功,但賦給rs後,使用rs.NextRecordset竟然出錯:“Current   provider   does   not   support   returning   multiple   recordsets   from   a   single   execution.”,執行SP之前已經將cnn.CursorLocation設為client了,為何還會出現這個error,實在是不解!???各位可有解決的辦法?  
   
   
  问题点数:200、回复次数:17Top

1 楼viena(维也纳N02)回复于 2004-12-03 15:58:47 得分 25

//Current   provider   does   not   support   returning   multiple   recordsets   from   a   single   execution  
  提示的很明白了,当前提供者程序不支持返回多记录集,没办法  
  Top

2 楼viena(维也纳N02)回复于 2004-12-03 16:02:21 得分 25

那你把连接换成ODBC的试试呢Top

3 楼xys(永不放弃)回复于 2004-12-03 16:11:47 得分 25

如果确定只返回一条记录,我一般就多加个TOP   1  
  就可以了,否则是程序考虑不全,导致返回多条记录,你把SQL语句拷到数据库里面查询一下就清楚了,肯定是返回多条记录了。Top

4 楼xys(永不放弃)回复于 2004-12-03 16:13:38 得分 25

如果是类似于select   .....     where   A   =(select......)  
   
  的语句,肯定是不支持返回多条记录的,你查查代码吧。Top

5 楼leolan(史留香)回复于 2004-12-03 16:17:35 得分 0

//那你把连接换成ODBC的试试呢  
   
  已經是通過ODBC來連接的.  
   
  此connection是一個public的connection,且該程序與數據庫連接的字符串是保存在DSN文檔裡,所以不允許通過更改連接方式來解決.Top

6 楼leolan(史留香)回复于 2004-12-03 16:19:36 得分 0

To   xys:  
   
  該SQL語句在查詢分析器裡可以正確返回多個recordset.Top

7 楼xys(永不放弃)回复于 2004-12-03 16:30:33 得分 25

应该和连接方式没有关系。  
  我还是认为是语法的问题,能贴部份代码出来看下就更清楚了。Top

8 楼babyt(阿泰)回复于 2004-12-03 16:36:30 得分 25

Current   provider   does   not   support   returning   multiple   recordsets   from   a   single   execution  
  用这句去google  
  结果不少  
   
  这篇可能会有些须帮助  
  http://www.4guysfromrolla.com/webtech/083101-1.shtmlTop

9 楼leolan(史留香)回复于 2004-12-03 16:37:49 得分 0

sql語句是一個執行stored   procdure的statement,stored   procdure代碼太長了,不方便貼出來...而且我想應該不是sql語句的問題,因為它在查詢分析器裡可以正確返回多個recordset.  
  Top

10 楼xys(永不放弃)回复于 2004-12-03 16:49:41 得分 25

Dim   CmdProce   As   New   adodb.Command  
                  CmdProce.ActiveConnection   =   Ado.cnn  
                   
                  CmdProce.CommandText   =   "test"  
                  CmdProce.CommandType   =   adCmdStoredProc  
                   
                  CmdProce.Parameters(0).Direction   =   adParamReturnValue  
                  CmdProce.Parameters(0).Type   =   adDouble  
                   
                  CmdProce.Parameters(1).Direction   =   adParamInput  
                  CmdProce.Parameters(1).Type   =   adInteger  
                  CmdProce.Parameters(1).Value   =   recStegata!HINMEICD  
                   
                  CmdProce.Parameters(2).Direction   =   adParamInput  
                  CmdProce.Parameters(2).Type   =   adInteger  
                  CmdProce.Parameters(2).Value   =   recStegata!SOUKO  
                   
                  CmdProce.Parameters(3).Direction   =   adParamOutput  
                  CmdProce.Parameters(3).Type   =   adDouble  
                  CmdProce.Parameters(3).Value   =   0  
   
                  CmdProce.Parameters(4).Direction   =   adParamOutput  
                  CmdProce.Parameters(4).Type   =   adDouble  
                  CmdProce.Parameters(4).Value   =   0  
   
                  CmdProce.Parameters(5).Direction   =   adParamOutput  
                  CmdProce.Parameters(5).Type   =   adDouble  
                  CmdProce.Parameters(5).Value   =   0  
                   
                  CmdProce.Execute  
   
  这是两个参数输入,三个结果输出的例子。  
   
  参考下,改动执行语句吧。  
  Top

11 楼viena(维也纳N02)回复于 2004-12-03 17:07:30 得分 0

晕,他说只有用Access才出现这样的问题,用SQLServer无论是OLEDB还是ODBC都没有问题啊~  
   
  以下from   babyt(阿泰)的链接:  
   
  I've   successfully   used   multiple   Recordsets   with   MS   SQL-Server,   using   either   the   OLEDB   or   ODBC   data   providers.   I   have   yet   to   try   it   to   other   RDBMS   products,   but   it   didn't   work   at   all   with   MS   Access   Database.   When   I   tried   to   implement   multiple   Recordsets   using   an   Access   database,   I   received   the   following   error   message:    
   
  ADODB.Recordset   (0x800A0CB3)  
  Current   provider   does   not   support   returning   multiple   recordsets   from   a   single   execution    
   
  Top

12 楼leolan(史留香)回复于 2004-12-03 17:26:09 得分 0

是啊,我也看過了.忘了說我的是SQL   Server   2000.Top

13 楼leolan(史留香)回复于 2004-12-03 17:38:12 得分 0

另外有一點,我在SP中是通過cursor來返回recordset,會不會是在游標內返回的recordset不能保存到最後的結果集當中呢?Top

14 楼leolan(史留香)回复于 2004-12-03 18:36:06 得分 0

轉到SQL版看看能不能解決..Top

15 楼jingxijun(一笑)回复于 2004-12-03 18:56:02 得分 25

我在连DBF时也碰到过类似事情Top

16 楼leolan(史留香)回复于 2004-12-04 08:44:17 得分 0

自己頂Top

17 楼leolan(史留香)回复于 2004-12-04 11:47:03 得分 0

還是轉回來結貼算了,唉..Top

相关问题

  • SQL Server下的Recordset
  • recordset
  • 如何在ADO中创建SQL的Recordset
  • 请谈谈execute,recordset的区别?
  • ADO中怎样用复合SQL查询语句来打开RECORDSET?
  • 急救!ADO中recordset对象操作SQL Server数据库.
  • VB中能不能通过RecordSet获得对应的SQL语句?
  • 有关execute(@sql)的问题
  • 用execute sql和execute(sql)有什么区别?
  • SQL语句:最多只读8条记录用recordset对象怎样实现?

关键词

  • 语句
  • access
  • sql
  • cmdproce
  • recordset
  • 執行
  • 返回多
  • 語句
  • 返回
  • 记录

得分解答快速导航

  • 帖主:leolan
  • viena
  • viena
  • xys
  • xys
  • xys
  • babyt
  • xys
  • jingxijun

相关链接

  • Visual Basic类图书
  • Visual Basic类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo