Хотя название этого вопроса похоже на другие вопросы, которые задавались в прошлом, я не смог с помощью ограниченного поиска в Google или SE найти ответ, который помог мне с моей проблемой ниже.
Я пытаюсьзабрать данные из листа Excel для обработки.Обнаружив, что более сложный оператор SQL с объединением дал ошибку, я посмотрел глубже и обнаружил следующее:
Следующий оператор SQL работает нормально:
SELECT [DNSHEET$].[DNS] FROM [DNSHEET$]
Однако приведенный ниже оператор SQL этого не делает, и это дает ошибку, указанную в заголовке позже.
SELECT [DNSHEET$].[DNK] FROM [DNSHEET$]
Я использую приведенный ниже код для запуска любого оператора SQL - они сохраняются в sql1
которая определена как строка.
rs.execute(sql1), cn
Где rs
- это набор записей, а cn
соединение.
cn
определяется как:Заголовки
Set cn = CreateObject("ADODB.Connection")
With cn
.provider="Microsoft.ACE.OLEDB.16.0"
.ConnectionString="Data Source=" & ThisWorkbook.Path & "\" & ThisWorkbook.Name & ";" & _ "Extended Properties=""Excel 12.0 Xml;HDR=YES"";"
.open
End with
DNS
и DNK
имеют правильные имена и соответствуют заголовкам на листе DNSHEET
.
DNS
заполняется строковыми данными,DNK
содержит целые числа от 1 до примерно 25000.
Обновление : Эта проблема решена путем закрытия и повторного открытия книги Excel.Тогда оба SQL-запроса могли бы выполняться.
Следовательно, возникает другой вопрос: почему это происходит и как выяснить причину проблемы?