Извлечение более 255 символов из поля запроса

#vba #character

#vba #символ

Вопрос:

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

(По крайней мере, при использовании этого метода:)

 MyVar = Nz(rst.Fields("myfield").Value)
  

Большинство обходных путей, которые я нашел в Интернете, предлагают создать таблицу, изменить желаемую настройку поля на длинный текст, а затем перенести данные из запроса в таблицу, но я получаю те же результаты. Длинное текстовое поле все еще усекается во время выполнения DoCmd.

(По крайней мере, когда я делаю это таким образом:)

 CurrentDB.Execute "Insert Into target_table Select myquery.* From myquery"
  

В других предложениях упоминается изменение поля на группирование по «Первому», но при запуске поле возвращается к «Выражению», поскольку определение поля включает функцию, которая выполняется во время запроса для обработки результатов.

Запрос также не мой и довольно сложный, с использованием других выражений полей, которые вызывают другие функции в таблицах. Я хотел бы избежать обратного проектирования всего этого, просто чтобы обновить таблицу, если это вообще возможно. Данные уже на моем экране, смотрят на меня — я просто хочу иметь возможность их использовать.

Это очень Microsoft-решение для продукта MS отображать некоторые данные, а затем сообщать вам, что он не может найти материал, который он вам только что дал (я смотрю на вас, file Explorer), но я надеюсь, что у кого-то здесь может быть жизнеспособное предложение. Возможно, какие-то другие методы запроса к таблице, которые не усекают? Какой-либо другой параметр запроса или метод извлечения поля?

Ответ №1:

Попробуйте это:

 Dim MyVar As String
Dim Value As Variant

Value = rst.Fields("myfield").Value
MyVar = Nz(Value)
  

В любом случае это работает:

 MyVar = Nz(DLookup("myfield", "myquery", "Id = " amp; someId amp; ""))
  

Однако, скорее всего, ваш myquery является ограничивающим фактором. Это должен быть прямой запрос select, чтобы не усекать поля memo.

Комментарии:

1. Ах, DLookup! Ты находка, спасибо! Очень признателен.