sql-server - 在 Excel VBA 的单个查询中加入 Access 表和 SQL Server 表
问题描述
我正在使用 Excel 64 位
我有一个 ms-access 数据库,在这个数据库中我有普通的 ms-access 表和一些来自 SQL Server 的链接表,我有一个引用链接表的查询,当我从 excel vba 触发该查询时它给了我一个 ODBC 错误,但是我能够成功地从 excel vba 获取非链接表。
现在我正在考虑不同的方法,是否可以在单个查询中加入 ms-access 和 SQL Server 表,我从网上找到了一些代码并尝试了我的运气,但它不起作用并给出错误消息“不能找到可安装的 ISAM”,下面是我正在使用的代码。
注意:- 表“PeopleMain”是一个 sql server 表,除此表之外都是 ms-access 表。
[代码]
Sub FetchData3()
Dim rs As Object
Dim cn As Object
Dim ss As String
Dim conn As String
Dim accdb As Object
conn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=G:\Workflow Tools (Michael Cantor)\Tool For Fixing Bug From Michael Cantor\PI MDT Reconciliation Workflow Tool\PI Database.accdb;Persist Security Info=False;Mode=Read"
ss = "SELECT RM.ReconciliationID, RM.FirmID, RM.FirmName, RM.DateRequested, RM.DueDate, Rm.ExtendedDueDate, " & _
"Requestor.Name, SecondaryRequestor.Name FROM " & _
"((ReconciliationMaster RM INNER JOIN Reconciliation_Fund RF ON RF.ReconciliationID = RM.ReconciliationID) " & _
"LEFT JOIN (SELECT Preferred_Name + ' ' + Last_Name AS Name, People_ID FROM " & _
"[Provider=sqloledb;Server=servername;Database=database;Trusted_Connection=Yes].PeopleMain) Requestor " & _
"ON Requestor.People_ID = RM.PrimaryRequestor) LEFT JOIN (SELECT Preferred_Name + ' ' + Last_Name AS Name, " & _
"People_ID FROM [Provider=sqloledb;Server=servername;Database=database;Trusted_Connection=Yes].PeopleMain) " & _
"SecondaryRequestor ON SecondaryRequestor.People_ID = RM.SecondaryRequestor WHERE RM.ReconciliationID = 522;"
Set cn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")
cn.Open conn
rs.Open ss, cn
Sheet1.Cells.ClearContents
Sheet1.Range("A1").CopyFromRecordset rs
rs.Close
Set rs = Nothing
cn.Close
Set cn = Nothing
MsgBox "done"
End Sub
谢谢卡西夫
解决方案
Access 允许查询和加入 ODBC 数据源,而不是 OLEDB 数据源。
将查询中使用的连接字符串更改为 ODBC 字符串:
[ODBC;Driver={SQL Server};Server=servername;Database=database;Trusted_Connection=Yes].PeopleMain
当然,如果可用,我建议使用更新的 ODBC 驱动程序。
推荐阅读
- assembly - 如何在 ARM 程序集中引用“\0”术语?
- javascript - 如何在猫鼬中分配一个objectid数组
- python - 递归和列表变异
- flutter - Flutter 身份验证和角色检查
- microservices - 微服务从 Azure 服务总线主题中检索 OrderId
- scipy-optimize-minimize - Scipy.optimize - 最小化不尊重约束
- java - 如何通过实例化类来制作多个单独工作的 JButton?
- mongodb - 如何引用我试图保存在 nestjs/mongoose 中的模式?
- azure - 尝试使用特定设备标签通过 Rest API 向 Azure Notification Hub 发送推送通知
- jquery - jQuery 日期验证在 Chrome 中运行良好但在 IE 中无法运行