Hei*_*nzi 12 sql-server excel ms-access vba excel-vba
似乎已弃用从VBA项目直接访问SQL Server数据库的所有方法:
我错过了什么?从VBA访问SQL Server数据库的官方微软批准方式是什么(毕竟,不推荐使用Office 2013中包含的官方开发语言)?
Gor*_*son 11
我错过了什么?
普通的旧ODBC.在Access以外的Office应用程序的VBA项目中,通过ADO的ODBC是最直接的:
Sub AdoOdbcExample()
Dim con As Object
Set con = CreateObject("ADODB.Connection")
con.Open _
"Driver={SQL Server Native Client 11.0};" & _
"Server=.\SQLEXPRESS;" & _
"Database=myDb;" & _
"Trusted_Connection=yes;"
con.Execute "UPDATE Clients SET FirstName='Gord' WHERE ID=5;"
con.Close
Set con = Nothing
End Sub
Run Code Online (Sandbox Code Playgroud)
对于Access中的VBA项目,我们还可以选择使用ODBC链接表和通过ACE DAO传递查询,就像我们一直有
Sub DaoOdbcExample()
Dim cdb As DAO.Database, qdf As DAO.QueryDef
Set cdb = CurrentDb
Set qdf = cdb.CreateQueryDef("")
qdf.Connect = "ODBC;" & _
"Driver={SQL Server Native Client 11.0};" & _
"Server=.\SQLEXPRESS;" & _
"Database=myDb;" & _
"Trusted_Connection=yes;"
qdf.sql = "UPDATE Clients SET FirstName='Gord' WHERE ID=5;"
qdf.ReturnsRecords = False
qdf.Execute dbFailOnError
Set qdf = Nothing
Set cdb = Nothing
End Sub
Run Code Online (Sandbox Code Playgroud)
笔记:
SQL Server Native Client 11.0是SQL Server 2014附带的版本(参考:此处).
引用的过时数据访问技术列表称"DAO 3.6是该技术的最终版本.它不适用于64位Windows操作系统." 这是指Jet DAO("Microsoft DAO 3.6对象库").如果安装了64位版本的Access数据库引擎,则ACE DAO("Microsoft Office 14.0 Access数据库引擎对象库")确实可用于64位应用程序.