Ms access 访问VBA以从SQL Server表源更新Access表
我创建了下面的代码来测试是否可以运行查询并从SQLServer表中检索数据。到目前为止,我可以使用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
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文件中的表。