首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在与请求的名称或序号对应的集合中找不到项

在与请求的名称或序号对应的集合中找不到项
EN

Stack Overflow用户
提问于 2014-07-08 05:38:48
回答 3查看 13K关注 0票数 1

以下代码在此存储过程上不起作用。它适用于查询和另一个存储过程。

它将不会找到此存储过程的值,并返回错误"Item be debug.print in the collection in the collection for the requested or ordinal“

代码语言:javascript
复制
Dim x As ADODB.Connection
Set x = New ADODB.Connection

x.ConnectionString = "Provider=a;Server=b;Database=c;Trusted_Connection=yes;"
x.Open

Dim y As ADODB.Recordset
Set y = New ADODB.Recordset
x.CommandTimeout = 0

Set y = x.Execute("exec SP_storedprocedure 0")
Debug.Print y(0), y(1), y(2), y(3)**--the problem is here**

y.Close
Set y = Nothing
x.Close
Set x = Nothing
EN

回答 3

Stack Overflow用户

发布于 2014-10-28 22:41:51

确保要访问数据库的用户的安全对象中包含存储过程。为此:

在SSMS的安全性下-->用户-->右键单击您正在访问的用户-->单击属性-->单击Securables选项卡,查看列表并确保其中包含存储过程。如果没有单击"search“按钮-->检查"specific objects”单选框-->单击OK -->在新弹出的窗口中单击"Object type“按钮--> check Stored procedure checkbox -->单击OK -->确保存储过程已列出并单击OK -->在securables下列出后立即单击OK -->在显式选项卡下查找权限列中的"Excute”-->找到Grantor列下有"dbo“的那个,然后选中Grant复选框并单击OK。

这应该可以解决问题。

票数 0
EN

Stack Overflow用户

发布于 2014-11-11 01:18:34

确保您的数据集未在筛选中。将数据集的筛选器设置为false,然后关闭它,然后使用它。或者最好使用干净的数据集。

票数 0
EN

Stack Overflow用户

发布于 2016-10-31 18:38:25

您的存储过程中有可能包含debug select吗?您可能正在选择某个变量的值作为调试语句。这将产生返回两个表的效果。除非另有说明,否则您的数据集将位于第一个数据集。

在SSMS中这样做,并确保它返回的是您认为它返回的内容。

代码语言:javascript
复制
exec SP_storedprocedure 0

另外,为了解决这个问题,可以创建4条debug.print语句,看看哪条语句会中断。

考虑到您对@MarkBalhoff关于列计数为零的声明,另一种可能是您只是忘记在查询结束时返回结果。您正在构建临时表吗?

sp中的最后一个(或接近最后一个)语句应该是

代码语言:javascript
复制
select * from #temp

类似于在函数中计算正确的值,然后忘记返回它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24620324

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档