У меня есть макрос в Excel VBA, который создает соединение ADODB с базой данных Access и вставляет результаты предварительно определенного запроса в лист в книге Excel.
Dim Con As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim iCols As Integer
Set Con = New ADODB.Connection
With Con
.Provider = "Microsoft.ACE.OLEDB.12.0"
.Open AccessDBPath
End With
Dim Query1 As String
Query1 = "the query is written here"
Set rs = New ADODB.Recordset
rs.Open Query1, Con
Sheets("Query1").Cells.Clear
Sheets("Query1").Range("A2").CopyFromRecordset rs
For iCols = 0 To rs.Fields.Count - 1
Sheets("Query1").Cells(1, iCols + 1).Value = rs.Fields(iCols).Name
Next
'Close Recordset
rs.Close
'Close Connection
Con.Close
В девяти случаях из десяти это работает отлично и получает данные так, как и ожидалось. Однако в некоторых случаях вставляемые данные неверны.
Когда это неверно, он вставляет полный набор правильных данных (около 40 тыс. Строк), но добавляет набор повторяющихся строк (дополнительные несколько сотен строк, которые уже были учтены в первых 40 тыс.) С некоторым, казалось бы, случайным пробелом. строки в конце таблицы. Я не могу понять, почему это происходит, и мне было интересно, сталкивался ли кто-нибудь еще с подобной проблемой.
Как я уже сказал, макрос иногда работает, и я не уверен, почему в определенные моменты он работает и правильно извлекает данные, а в других - нет.