У меня есть таблица Excel. Я подключаюсь к базе данных Access через ODBC. Что-то вдоль строк:Как использовать Excel VBA для извлечения поля Memo из Access Database?
Set dbEng = CreateObject("DAO.DBEngine.40")
Set oWspc = dbEng.CreateWorkspace("ODBCWspc", "", "", dbUseODBC)
Set oConn = oWspc.OpenConnection("Connection", , True, "ODBC;DSN=CLIENTDB;")
Затем я использую запрос и выбираю результирующий набор для получения данных таблицы.
Set oQuery = oConn.CreateQueryDef("tmpQuery")
oQuery.Sql = "SELECT idField, memoField FROM myTable"
Set oRs = oQuery.OpenRecordset
Проблема теперь возникает. Мое поле - это dbMemo, потому что максимальная длина содержимого до нескольких сотен символов. Это не так долго, и на самом деле ценность, которую я читаю, - всего дюжина символов. Но Excel просто не способен обрабатывать содержимое поля Memo. Мой код ...
ActiveCell = oRs.Fields("memoField")
... дает ошибку Ошибка времени выполнения '3146': ODBC - вызов не выполнен.
Любые предложения? Может ли Excel VBA получить данные поля memo? Или это просто невозможно. Я получаю точно такую же ошибку и от GetChunk.
ActiveCell = oRs.Fields("memoField").GetChunk(0, 2)
... также дает ошибку Ошибка времени выполнения '3146': ODBC - вызов не выполнен.
Преобразование в текстовое поле заставляет все работать нормально. Однако некоторые данные усекаются до 255 символов, что означает, что это не выполнимое решение.
Я попробовал CStr на ранней стадии, считая, что это проблема с преобразованием, но это привело к той же ошибке. Спасибо, я попробую другие два варианта. –