Надеюсь, у вас всех хороший день. Я перебираю диапазон из открытой рабочей книги, и для каждого l oop мне нужно проверить, есть ли детали в моей таблице доступа, и если нет, вставить детали. У меня есть следующий код, который, я думаю, должен работать хорошо, но, похоже, в Excel есть проблема с открытием и закрытием RecordSet каждый l oop. Думаю, это проблема в любом случае, так как она не выдает никаких исключений, она просто перестает отвечать, и мне нужно закрыть книгу
l oop само по себе прекрасно работает, как я тестировал без части SQL и он завершил более 100 тысяч записей менее чем за 1 минуту. Любая помощь в этом была бы очень признательна.
With dbConnection
.Provider = "Microsoft.ACE.OLEDB.12.0;"
.ConnectionString = dbConnectionString
.Open
ItemsAdded = 0
dbRecordSet.ActiveConnection = dbConnection
For i = 1 To DataFile.ActiveSheet.Cells(Rows.Count, "A").End(xlUp).Row
oSQL = _
"Select * From " & TableName & " Where CompanyName = """ & Trim(DataRange(i, 1)) & """" & _
" And CommCode = """ & Trim(DataRange(i, 2)) & """;"
dbRecordSet.Open oSQL, dbConnection
If dbRecordSet.EOF = True Then 'Does not exist in the access database so add it
dbRecordSet.Close
dbConnection.Execute "INSERT INTO [" & SearchType & "Table_" & oYear & "] (CompanyName, CommCode, GoodsDescription, MonthsImported, " & _
"AddressLine1, AddressLine2, Town_City, County, PostCode) VALUES " & _
"(""" & DataRange(i, 1) & """, """ & DataRange(i, 2) & """, """ & Replace(DataRange(i, 3), """", "") & """, """ & DataRange(i, 4) & """, """ & _
Replace(DataRange(i, 5), """", "") & """, """ & DataRange(i, 6) & """, """ & DataRange(i, 7) & """, """ & DataRange(i, 8) & """, """ & DataRange(i, 9) & """);"
ItemsAdded = ItemsAdded + 1
Else: dbRecordSet.Close
End If
Next i
.Close
End With