Передайте длинные строки Unicode в параметр FireDac TADQuery

Я использовал AsWideString для передачи строки Unicode в параметр TADQuery.

ADQuery.Params.ParamByName('MyFld').AsWideString

Но когда строка становится слишком длинной, я получил ошибку:

[MyFld]. Max len = [8002], actual len = [10522]

Тогда я решил использовать свойство AsMemo

ADQuery.Params.ParamByName('MyFld').AsMemo

В этом случае моя строка Unicode отображается неправильно.

Как решить обе проблемы?

2 ответа

Тип TFDParam имеет.AsWideMemo в XE5, который должен правильно принимать символы Юникода и преодолевать ограничение размера, с которым вы столкнулись.

ADQuery.Params.ParamByName('MyFld').AsWideMemo := 'Some unicode string';

Фактическое поле базы данных имеет максимально допустимое количество символов. Вы не можете установить значение, которое превышает этот предел. Он либо усечет значение, либо, в вашем случае, выдаст ошибку. Вы не можете использовать AsMemo установить не-Memo поле. Продолжайте использовать AsWideString и обратите внимание на расположение вашей базы данных.

Другие вопросы по тегам