Sql server 错误:";未为命令对象“设置命令文本”;在VBA上从SQL运行存储过程时
我正在尝试使用以下VBA代码在VBA上运行存储过程: 请有人告诉我:我在“rs.Open”上得到错误Sql server 错误:";未为命令对象“设置命令文本”;在VBA上从SQL运行存储过程时,sql-server,vba,excel,stored-procedures,Sql Server,Vba,Excel,Stored Procedures,我正在尝试使用以下VBA代码在VBA上运行存储过程: 请有人告诉我:我在“rs.Open”上得到错误 对我来说,代码在逻辑上是有意义的,所以我不确定错误的含义。因为对我来说,我已经为命令对象设置了文本 您没有将记录集连接到命令。假设存储过程发出一个SELECT,将代码更改为 Set rs = ADODBCmd.Execute thisWorkbook.Worksheets("macrotest").Range("a2").CopyFromRecordset rs Execute-方法将返回一个
对我来说,代码在逻辑上是有意义的,所以我不确定错误的含义。因为对我来说,我已经为命令对象设置了文本 您没有将记录集连接到命令。假设存储过程发出一个
SELECT
,将代码更改为
Set rs = ADODBCmd.Execute
thisWorkbook.Worksheets("macrotest").Range("a2").CopyFromRecordset rs
Execute
-方法将返回一个记录集作为结果,无需自己创建一个。或者您应该将命令对象添加到打开操作中
rs.Open ADODBCmd
为什么CommandText字符串用方括号括起来?我以前没有见过与字符串文字一起使用的语法。Hi@JohnRC这是我的存储过程。我想运行这个存储过程并将输出粘贴到工作表上。我的意思是,您使用的是带有方括号的语法[“ukrmc.dbo.fridaycommentation”]
,不只是使用字符串文字-方括号对文字字符串有什么影响?@JohnRC我想这就是我编写存储过程名称的方式。不是这样吗?我认为您应该能够使用不带方括号的文本字符串。无论如何,我认为@FunThomas为您的问题提供了正确的答案。谢谢!这使我通过了execute命令,但现在我在“ThisWorkbook.Worksheets…”处出现错误“参数数量错误或属性分配无效”。我认为您需要将记录集对象作为参数提供。我认为JohnRC是正确的,您可能忘记了将rs
作为参数添加到CopyFromRecordset
方法中。现在出现错误“对象关闭时不允许操作”,但我认为执行rs.Execute将打开记录集@JohnRCconn.close
应该是最后一条语句-放在CopyFromRecordset
语句之后
rs.Open ADODBCmd