Мне сложно создать запрос по двум разным базам данных в ADO, мне нужно выполнить много запросов из разных источников, например, выбрать из файла Excel с левым соединением в файле доступа.
Когда я использую два разных файла Excel, как показано ниже, код работает нормально.
Dim SQL As String
Dim CN As New ADODB.Connection
Dim rs As New ADODB.Recordset
Set CN = New ADODB.Connection
Set rs = New ADODB.Recordset
'Open connection
CN.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=C:\ExcelTable.xlsx" & _
";Extended Properties=""Excel 12.0;HDR=Yes;IMEX=1"";"
SQL = " SELECT * FROM [table1$] t1" _
& " LEFT JOIN (SELECT * FROM" _
& " [Excel 12.0 Xml;HDR=Yes;Database=C:\db1.xlsx].table2) t2" _
& " ON t1.[reftable1] = t2.reftable2"
rs.Open SQL, CN, adOpenDynamic
If rs.EOF = False Then
Do While Not rs.EOF
debug.print rs("field1")
rs.MoveNext
Loop
End If
rs.Close
CN.Close
Но мне нужно сделать этот запрос с левым соединением в файле доступа, и я получил ошибку: «не удается обновить базу данных или объекттолько для чтения », когда я пытаюсь открыть набор записей.
Мой код:
Dim SQL As String
Dim CN As New ADODB.Connection
Dim rs As New ADODB.Recordset
Set CN = New ADODB.Connection
Set rs = New ADODB.Recordset
'Open connection
CN.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=C:\ExcelTable.xlsx" & _
";Extended Properties=""Excel 12.0;HDR=Yes;IMEX=1"";"
SQL = " SELECT * FROM [table1$] t1" _
& " LEFT JOIN (SELECT * FROM" _
& " [Data Source=C:\db1.accdb].table2) t2" _
& " ON t1.[reftable1] = t2.reftable2"
rs.Open SQL, CN, adOpenDynamic
If rs.EOF = False Then
Do While Not rs.EOF
debug.print rs("field1")
rs.MoveNext
Loop
End If
rs.Close
CN.Close