Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 错误:";未为命令对象“设置命令文本”;在VBA上从SQL运行存储过程时_Sql Server_Vba_Excel_Stored Procedures - Fatal编程技术网

Sql server 错误:";未为命令对象“设置命令文本”;在VBA上从SQL运行存储过程时

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-方法将返回一个

我正在尝试使用以下VBA代码在VBA上运行存储过程: 请有人告诉我:我在“rs.Open”上得到错误


对我来说,代码在逻辑上是有意义的,所以我不确定错误的含义。因为对我来说,我已经为命令对象设置了文本

您没有将记录集连接到命令。假设存储过程发出一个
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将打开记录集@JohnRC
conn.close
应该是最后一条语句-放在
CopyFromRecordset
语句之后
rs.Open ADODBCmd