MS Access VBA中的多个数据库?

时间:2012-09-26 12:44:28

标签: sql sql-server vba ms-access access-vba

此Microsoft KB article详细说明了如何在除Access项目使用的当前数据库之外的其他数据库上运行查询。但是它只说明如何连接到DBase,Foxpro,Paradox,BTrieve和ODBC。

我希望能够做到这样的事情:

UPDATE MSSQLDatabase.Table
    SET MSSQLDatabase.Table.Column = AccessDatabase.Table.Column
    WHERE MSSQLDatabase.Table.Column = AccessDatabase.Table.ID

INSERT INTO AccessDatabase.Table
    VALUES (AccessDatabase.Table.ID)

你能指点一下从哪里开始吗?我想要连接的数据库是SQL Server 2008 Provider Native连接。我正在使用Access 2007。

在VBA中这样做是完美的。

2 个答案:

答案 0 :(得分:1)

到目前为止,在MS Access中使用SQL Server的最简单方法是使用linked tables。但是,您也可以运行pass-through queries并引用内联连接:

SELECT * FROM [ODBC;FILEDSN=Z:\Docs\Test.dsn;].table_1

或者

SELECT * FROM 
  [ODBC;DRIVER=SQL Server;SERVER=srvr;Trusted_Connection=Yes;DATABASE=Test;].table_1

或者

SELECT * FROM [ODBC;Driver={SQL Server Native Client 11.0};Server=svr;Database=test;Trusted_Connection=yes;].table_1

另见http://www.connectionstrings.com/sql-server-2008

答案 1 :(得分:0)

此解决方案可以捕获错误:

Private Sub Command10_Click()
    On Error GoTo Err1:
        Dim cn As ADODB.Connection
        Set cn = New ADODB.Connection
        With cn
            .Provider = "SQL Native Client"
            .ConnectionString = "Server=myserver\myinstance;Database=mydb;Uid=myuser;Pwd=mypass;]"
            .Open
        End With

        MsgBox "Connection successful!"
        cn.Close
        Exit Sub

    Err1:
        MsgBox Err.DESCRIPTION
End Sub

唯一需要注意的是,在Visual Basic编辑器中,您必须先转到Tools > References,然后选中Microsoft ActiveX Data Objects 2.x Library