0
您好專家我在SQL Server的更新查詢中遇到問題。首先運行select查詢,然後將結果傳遞給currentdb.execute(用於更新當前正在使用的訪問文件的表),使用Access vba我不正確。我真的希望你能幫助我。也許你們知道更好的方式來運行我的程序:錯誤:訪問SQL Server的VBA查詢
- 連接到sql server 2008,運行select查詢。
- 將選擇查詢的結果傳遞給訪問數據庫執行命令(或者如果您有更好的想法)更新當前正在使用的訪問文件中的表。
我得到的代碼錯誤是類型不匹配,並突出顯示.OpenSchema。
這些是我犯錯的代碼的一部分(我真的不知道如何做到這一點)。
dbObj.Execute ("UPDATE ACCESS.tbl_Name RIGHT JOIN " & _
conn.OpenSchema(adSchemaTables, Array(Empty, Empty, Empty, "SQLSVR.tbl_Name")) & _
" ON ACCESS.tbl_Name.FieldName_access = " & rst!FieldName_sqlsvr & _
" SET ACCESS.tbl_Name.FieldName_access = " & rst!FieldName_sqlsvr)
這些是整個代碼。
Option Compare Database
Sub LocalSQLServerConn_Test()
Dim dbOjb As DAO.Database
Dim strDBName As String
Dim strUserName As String
Dim strPassword As String
Set dbObj = CurrentDb()
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; " & _
"Workstation ID = ABCDE12345;"
conn.ConnectionString = strConnectString
conn.Open
strSQL = "SELECT DISTINCT SQLSVR.tbl_Name.FieldName_sqlsvr FROM SQLSVR.tbl_Name"
rst.Open Source:=strSQL, ActiveConnection:=conn, _
CursorType:=adOpenDynamic, LockType:=adLockOptimistic
If rst.RecordCount = 0 Then
MsgBox "No records returned"
Else
rst.MoveFirst
Do While Not rst.EOF
dbObj.Execute ("UPDATE ACCESS.tbl_Name RIGHT JOIN " & _
conn.OpenSchema(adSchemaTables, Array(Empty, Empty, Empty, "SQLSVR.tbl_Name")) & _
" ON ACCESS.tbl_Name.FieldName_access = " & rst!FieldName_sqlsvr & _
" SET ACCESS.tbl_Name.FieldName_access = " & rst!FieldName_sqlsvr)
rst.MoveNext
Loop
End If
conn.Close
rst.Close
Set dbObj = Nothing
末次
如果你只是想更新ACCESS.tbl_Name,難道你不完全放棄RIGHT JOIN並有「UPDATE ... SET ...」嗎? (我不是這方面的專家。) – Richard