Невозможно выполнить запрос Access через соединение ADODB в Excel - PullRequest
2 голосов
/ 22 апреля 2019

Я пытаюсь вставить результаты запроса на доступ к листу в Excel.

Когда я запускаю следующий код, ничего не происходит.Никаких ошибок или предупреждений, просто ничего не вставляется. Однако, когда я запускаю тот же код, но использую таблицу вместо имени запроса, он успешно извлекает таблицу.Но когда я заменяю его именем запроса, он ничего не возвращает.

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

Запрос, который я пытаюсь получить, ссылается на другие запросы в виде таблиц, и я думаю, именно поэтому у меня возникают проблемы.Как я уже сказал, я извлекал данные из Access с помощью этого кода много раз, но я мог это делать только тогда, когда ссылаюсь только на таблицы, а не на запросы.

Dim Con As ADODB.Connection
Set Con = New ADODB.Connection

Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset

Dim iCols As Integer

Set Con = New ADODB.Connection

With Con
.Provider = "Microsoft.ACE.OLEDB.12.0"
.Open AccessDBPath
End With

Set rs = New ADODB.Recordset
rs.Open "query1", Con

Sheets("NAHV").Range("E2").CopyFromRecordset rs

Я попытался заменить строку rs.Open командой Execute:

Set rs = Con.Execute("query1")

, но это также не сработало.

Я также попытался заменитьполный блок с

Dim cn As Object, rs As Object
Dim myFile As String: myFile = AccessDBPath
Set cn = CreateObject("ADODB.Connection")
With cn
    .Provider = "Microsoft.ACE.OLEDB.12.0"
    .ConnectionString = "Data Source=" & myFile & ";"
    .Open
End With
Set rs = cn.Execute("query1")

Sheets("NAHV").Range("E2").CopyFromRecordset rs
rs.Close
cn.Close
Set rs = Nothing
Set cn = Nothing

, и это тоже не сработало.

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