Ms access 访问VBA以从SQL Server表源更新Access表

Ms access 访问VBA以从SQL Server表源更新Access表,ms-access,ms-access-2007,vba,Ms Access,Ms Access 2007,Vba,我创建了下面的代码来测试是否可以运行查询并从SQLServer表中检索数据。到目前为止,我可以使用MessageBox返回结果,但不知何故,我不知道如何使用此连接来更新此访问文件中的表。基本上我想用它作为前端文件。然后,当表单打开时,它将自动更新该访问文件中的表,并将数据作为列表加载到组合框中。我尝试在这里搜索,并在这里和谷歌上阅读了许多讨论,但目前我找不到正确的解决方案 Option Compare Database Sub LocalServerConn_Test() Set conn

我创建了下面的代码来测试是否可以运行查询并从SQLServer表中检索数据。到目前为止,我可以使用
MessageBox
返回结果,但不知何故,我不知道如何使用此连接来更新此访问文件中的表。基本上我想用它作为前端文件。然后,当表单打开时,它将自动更新该访问文件中的表,并将数据作为列表加载到组合框中。我尝试在这里搜索,并在这里和谷歌上阅读了许多讨论,但目前我找不到正确的解决方案

Option Compare Database

Sub LocalServerConn_Test()


Set conn = New adodb.Connection
Set rst = New adodb.Recordset


strDBName = "DataSet"

strConnectString = "Provider = SQLOLEDB.1; Integrated Security = SSPI; " & _
    "Initial Catalog = " & strDBName & "; Persist Security Info = True; " & _
        "Worksation ID = abc123;"

            conn.ConnectionString = strConnectString

                conn.Open


strSQL = "SELECT DISTINCT dbo.abc.abc123 FROM dbo.abc"


rst.Open Source:=strSQL, ActiveConnection:=strConnectString, _
    CursorType:=adOpenDynamic, LockType:=adLockOptimistic

If rst.RecordCount = 0 Then
    MsgBox "No records returned"

    Else

        rst.MoveFirst
            Do While Not rst.EOF
                MsgBox rst.Fields("abc123").Value
                    rst.MoveNext
            Loop

End If

conn.Close
rst.Close

End Sub

您应该能够使用与此非常类似的代码:

Dim cdb As DAO.Database
Set cdb = CurrentDb
cdb.Execute _
        "DELETE FROM LocalTable", _
        dbFailOnError
cdb.Execute _
        "INSERT INTO LocalTable (abc123) " & _
        "SELECT DISTINCT abc123 " & _
        "FROM " & _
            "[" & _
                "ODBC;" & _
                "Driver={SQL Server};" & _
                "Server=.\SQLEXPRESS;" & _
                "Database=DataSet;" & _
                "Trusted_Connection=yes;" & _
            "].[dbo.abc]", _
        dbFailOnError
Set cdb = Nothing

您只需将组合框绑定到[LocalTable],SQL Server表中的更新值就会出现。

很抱歉,我的问题可能非常笼统,希望您能具体帮助我。基本上,我想从SQL Server更新Access文件中的表。但我需要先从SQLServer运行一个查询。假设我在SQL Server中有一个巨大的数据表。我需要从access vba运行一个查询“从SQLServerName中选择不同的位置”,然后使用SQL Server的查询结果更新同一access文件中的表。