У меня есть таблица доступа.Поля соответствуют полям книги Excel.Таблица Access содержит некоторые записи, которых нет на листе Excel, и наоборот.Тем не менее, есть некоторые совпадения.Пример:
Таблица доступа 1
ID Name Attribute
1 Canada A
2 USA B
3 Mexico A
Excel
Name Attribute
USA B
Mexico A
France B
Данные, присутствующие в Excel, но не Access, должны быть добавлены в таблицу Access.Ожидаемый результат:
ID Name Attribute
1 Canada A
2 USA B
3 Mexico A
4 France B
Прямо сейчас я открываю набор записей на листе Excel.Я хотел бы выполнить запрос, подобный
INSERT INTO Table1 (Name, Attribute)
SELECT (Name, Attribute) FROM Recordset
WHERE (Name, Attribute) NOT IN
(SELECT Name, Attribute FROM Table1)
Возможно ли это сделать в Access?Как мне обратиться к моей записи?Вот код, приводящий к вопросу:
Sub openWorksheet()
Dim cn As New ADODB.Connection
Dim rs1 As New ADODB.Recordset
Dim strQuery As String
Dim lastRowIndex As Long
Dim i As Integer
Dim wbPath As String
Dim db As DAO.Database
Dim rs2 As DAO.Recordset
wbPath = "C:\Users\david.grandmaison\Desktop\RISE\Rise_Template.xlsx"
cn.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=" & wbPath & ";" & _
"Extended Properties=Excel 12.0;"
strQuery = "SELECT Dist_Ret_Door_ID FROM [Sheet1$]"
rs1.Open strQuery, cn
Set db = CurrentDb
strQuery = "This is what I'm trying to write"
db.Execute strQuery
Я знаю, что мог бы зацикливаться на наборе записей Excel и проверять каждую запись одну за другой и добавлять ее, если она не существует, ноЯ ищу одну вставку, поскольку зацикливание займет слишком много времени.Однако, если я ошибаюсь или нет способа избежать этого, пожалуйста, дайте мне знать.