Передайте длинные строки 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
и обратите внимание на расположение вашей базы данных.