MyConnection.Execute執行一個返回多個RecordSet的SQL語句,為何會出現這樣的錯誤?
用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




