Перенос запроса доступа в Excel через Excel VBA и ADODB соединение - PullRequest
0 голосов
/ 27 июня 2019

У меня есть макрос в 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 тыс.) С некоторым, казалось бы, случайным пробелом. строки в конце таблицы. Я не могу понять, почему это происходит, и мне было интересно, сталкивался ли кто-нибудь еще с подобной проблемой.

Как я уже сказал, макрос иногда работает, и я не уверен, почему в определенные моменты он работает и правильно извлекает данные, а в других - нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...