【发布时间】:2017-07-19 22:57:36
【问题描述】:
我一直使用这个http://mikesknowledgebase.com/pages/SQLServer/RunStoredProcedureFromExcel.htm 作为框架来尝试从 VBA 运行存储过程,以便将数据直接拉入 Excel 工作表。到目前为止,我的问题是应该连接到 SQL Server 的线路。
我目前有这个:
con.Open "Provider=SQLOLEDB;Data Source=domain\serverName;Initial Catalog=databaseName;Integrated Security=SSPI;Trusted_Connection=Yes;"
但这给了我一个错误,说它不存在,或者访问被拒绝。我一直在尝试找到一个更好的示例来实际显示我将如何连接到 SQL Server,但找不到任何东西。我错过了一些明显的东西吗?还有其他方法可以连接到 SQL Server 以运行存储过程吗?
除此之外,通过查看代码,我不确定存储过程的参数是如何被存储过程读取的。例如,我有两个参数,@endDate 和 @beginDate。
我有这个:
cmd.Parameters.Append cmd.CreateParameter("@beginDate", adDate, adParamInput, 10, Range("J3").Text)
cmd.Parameters.Append cmd.CreateParameter("@endDate", adDate, adParamInput, 10, Range("J4").Text)
但它们不会在其他任何地方使用。这就是连接来自 excel 的输入和存储过程中的参数所需的全部内容吗?我只是想了解它是如何工作的。
编辑:我的数据库语法错误,需要更多信息。我的新问题是在创建参数时,我得到一个错误
应用程序为当前操作使用了错误类型的值。
我想那是因为我试图将文本转换为日期,将其存储为 varchar 可能会更好?它们都需要与 SQL Server 中的日期时间列匹配。
Edit2:显然我错了,因为参数现在起作用了。不知道为什么没有,但现在有。
【问题讨论】:
-
您使用的是真实域名和服务器名称吗?参数代码对我来说很合适。获得正确连接的一个好方法是创建一个指向数据库的表,然后查看其连接属性,方法是右键单击该表,选择“表”,然后选择“编辑”。
-
您的意思是在excel中使用从sql server中获取数据的东西在excel中打开一个表?我会尝试使用它来查看我是否拥有正确的域名。
-
是的,我就是这么想的。
-
是的,做到了。谢谢!现在只需要弄清楚参数。
-
很高兴我能帮上忙。一旦你开始工作,参数的东西就很酷了。
标签: sql sql-server vba excel