Набор записей ADODB в VBA говорит, что поле Excel пусто, когда оно не - PullRequest
1 голос
/ 14 января 2010

У меня есть лист Excel, который необходимо импортировать в базу данных Access. Лист выглядит так:

DATE RECEPTION  DENOMINATION        ITEM N°     QUANTITE RECUE
06/01/2010  DVD-Sex & the City  PCR-PA21550167  5
06/01/2010  DVD-Avatar Natie 2  PCR-PA21550209  10

Затем я передаю этот файл в базу данных, используя adodb:


Dim rs2 As New ADODB.Recordset
Dim cnn2 As New ADODB.Connection
Dim cmd2 As New ADODB.Command
Dim intField As Integer
Dim strFile As String

strFile = fncOpenFile
If strFile = "" Then Exit Sub

With cnn2
    .Provider = "Microsoft.Jet.OLEDB.4.0"
    .ConnectionString = "Data Source=" & strFile& "; " & "Extended Properties=Excel 8.0"
    .Open
End With

Set cmd2.ActiveConnection = cnn2
cmd2.CommandType = adCmdText
cmd2.CommandText = "SELECT * FROM [PCR$]"
rs2.CursorLocation = adUseClient
rs2.CursorType = adOpenDynamic
rs2.LockType = adLockOptimistic

rs2.Open cmd2

While Not rs2.EOF
        strNaam = rs2.Fields(3).Value
Loop

Теперь моя проблема: в некоторых полях есть текст. Тогда значение поля должно быть item0001, но, как сообщается, оно равно NULL

Когда поле имеет обычный номер, оно работает нормально.

Странная вещь: на листе есть другие текстовые поля, и они работают ТОЧНО.

1 Ответ

4 голосов
/ 14 января 2010

Будьте более конкретны в разделе «Расширенные свойства» (и не пропускайте там внутренние кавычки).

В частности, попробуйте Extended Properties="Excel 8.0;HDR=Yes;IMEX=1", чтобы разрешить смешанные числа и текстовые данные.

Подробнее на http://connectionstrings.com/.

...