【问题标题】:Connection to server failed from VBA but works from Access从 VBA 连接到服务器失败,但可以从 Access 连接
【发布时间】:2015-07-10 05:47:31
【问题描述】:

我在 MS 访问中设置了一些从网络上的 MS SQL 服务器获取数据的查询。当我从 MS 访问运行它们时,查询工作正常。但是,当通过 Excel 中的 VBA(需要我的仪表板)触发相同的查询时,它会说 ODBC 连接失败。我无法弄清楚这个过程中出了什么问题。以下所有详细信息:

MS Access 中的 ODBC 连接字符串 - 在查询的属性中设置

ODBC;DRIVER=SQL Server;SERVER=xyz;UID=xyz_reader;PWD=xyzpassword;Network=DBMSSOCN;Address=xyz,1433

Excel VBA 中使用的连接字符串 - 用于在 ms 访问中触发 odbc 查询

strConnection = "Provider=Microsoft.ACE.OLEDB.12.0;" & "Data Source=" & mydb.accdb

我得到的错误

Run-time error '-2147467259 (80004005)':
ODBC--connection to 'SQL Serverxyz' failed.

【问题讨论】:

  • 这对于您遇到困难的情况非常有帮助 - connectionstrings.com 并且有许多不同的连接器可用和示例。

标签: excel ms-access vba


【解决方案1】:

Excel VBA 连接是一个 ADODB 连接,所以你需要添加一个引用工具>>References 然后添加“Microsoft ActiveX 数据对象库” 然后使用像

这样的代码
Dim strConn As ADODB.Connection
Dim rs As ADODB.Recordset
Set strConn = New ADODB.Connection
Set rs = New ADODB.Recordset
strConn = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=True;Initial Catalog=YourDATABASE;Data Source=YourServer"

strSQL = "Your Select statement”

strConn.Open
rs.Open strSQL, strConn

现在您在记录集中有了自己的价值观。我希望这能解决您的问题。

【讨论】:

  • 欣赏答案。但是,我的挑战有点不同。我正在从服务器中提取一个大表,我想将其存储在 ms 访问文件中的本地表中。我无法连接到两个数据库(服务器和本地 ms 访问)并在不保留中间副本的情况下复制数据。因此,为此,我在 MS 访问中设置了一个连接到服务器的 ODBC 查询(这适用于我提到的连接字符串)。然后在 ms 访问中有一个等效的空白表,我正在从 excel-vba 运行查询“插入 local_table 选择 * 从 odbc_query”,然后我得到错误
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-10-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-09
相关资源
最近更新 更多