Непустое поле из листа Excel отображается как пустое в наборе записей - PullRequest
0 голосов
/ 15 сентября 2011

Я использую Excel VBA для написания макроса, который читает данные из листа Excel и обрабатывает их.По сути, я копирую данные из рабочей книги Excel A в рабочую таблицу X в рабочей книге Excel B.Рабочая книга B содержит макрос, который выполняет это копирование, а затем считывает данные в набор записей из рабочей таблицы X.

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

Это часть моего кода, которая имеет проблему.packageName передается в эту функцию, которая содержит строку.Объект набора записей objRecordset неправильно выбирает поле Name и отображается пустым, когда я пытаюсь напечатать значение набора записей для элемента, даже если оно не пустое.Остальные поля распечатаны просто отлично.Поле имени содержит буквы и цифры, такие как ABC1232WHSJ, ABCD3456.Есть идеи, что не так?

Dim objConnect As ADODB.Connection, objRecordset
Set objConnect = New ADODB.Connection

objConnect.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & ActiveWorkbook.Path & "\" & ActiveWorkbook.Name & ";" & "Extended Properties=""Excel 8.0;HDR=Yes;"";"

Const adOpenStatic = 3
Const adLockOptimistic = 3
Const adCmdText = &H1

Set objRecordset = CreateObject("ADODB.Recordset")
objRecordset.Open "Select * FROM [Sheet1$] WHERE Package LIKE '" & _
            packageName & "'", objConnect, adOpenStatic, adLockOptimistic, adCmdText

Debug.Print objRecordset.Fields.Item("Package")
Debug.Print objRecordset.Fields.Item("Name")

1 Ответ

0 голосов
/ 16 сентября 2011

У меня была такая же проблема.

Убедитесь, что столбцы имеют одинаковый числовой формат.

При использовании ado connection ado используйте формат для первой строки. Например, если это число, а второе это строка, то значение в таблице пустое (если создать таблицу, в противном случае вы получите ошибку)

Решение (работа для меня) - открыть книгу перед импортом данных и отформатировать столбец с нужным форматом, я использую числовой формат свойства из диапазона.

[] s

...