У меня проблемы с получением поля LONG
из базы данных в мое приложение Excel (VBA + ADO). Интересно, кто-нибудь может помочь?
Это никак не влияет (приведение к строке или нет):
myString = dataset!long_field
Я попробовал метод GetChunk
, который должен делать то, что я надеюсь:
myString = CStr(dataset!long_field.GetChunk(1000))
Это что-то получает, но я ожидаю не тех данных (обычно это какой-то искаженный беспорядок). Что странно, если я попробую запустить это в окне Immediate, пока я прохожу код, я получаю что-то обнадеживающее:
Debug.Print CStr(dataset!long_field.GetChunk(1000))
e l l o W o r l d !
Я не знаю, почему это (вроде) работает в окне «Немедленно», а не где-либо еще. Также примечание:
Похоже, что Oracle использует какую-то 2-байтовую кодировку, поэтому есть странное расстояние
Часть данных с начала отсутствует; это должно читаться как "Hello World!"
Мой другой план атаки заключался в написании функции на стороне базы данных для преобразования long
в varchar2
. К сожалению, это также не удалось, потому что таблица, к которой мне нужно получить доступ, находится за пределами моей схемы, и у меня нет соответствующих прав для выбора данных из функции (Oracle жалуется, что таблица не найдена).
Так что я отчасти заблудился :( Есть идеи?