CopyFromRecordset из Access в Excel вышел из строя - PullRequest
0 голосов
/ 03 июня 2019

Очень печальные результаты от:

ws.Range(myExcelTable).CopyFromRecordset rs
' myExcelTable is a named table with assigned range

Извлечение для rs (набор записей - это выбор из всех, не имеет значения, если это сделано таким образом или с именами полей, это тот же результат)

cmdSQL2 = "SELECT * FROM " & myAccessTable
rs.Open cmdSQL2, conn

По неизвестной причине он копирует записи в excel в следующем порядке (используя pID для отображения порядка):

3-8

0-2

9-количество записей

Я пробовал несколько методов диапазона, и результат тот же. Я их здесь "ручной бомбой", чтобы вырезать лишнюю работу, которую я выполнил в построении струн.

ws.Range("S4").CopyFromRecordset rs

ws.Range("S4:BP258").CopyFromRecordset rs

Это поведение не отображается, если таблица, которую вы копируете из Access, имеет только одно поле (столбец), а таблица в Excel имеет один заголовок (столбец), но теперь она отображается для меня в этой таблице с несколькими полями.

Мне кажется, что это происходит, когда набор записей действительно создается каким-то образом, а не на стороне "вставки" или назначения (Excel).

enter image description here

********************************************** ***************************

Проблема, решенная этим СО. Автором (оставит здесь, пока не будет помещена в качестве ответа): https://stackoverflow.com/users/7296893/erik-a

Использование ORDER BY в команде sql:

cmdSQL2 = "SELECT * FROM " & myAccessTable & " ORDER BY " & primaryKey

Из непосредственного окна (удаляет переменные, чтобы вы могли лучше видеть команду для новичков в таких вещах:

SELECT * FROM County_Directory ЗАКАЗАТЬ ПО [pID]

********************************************** ***************************

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