我使用AsWideString将Unicode字符串传递给TADQuery参数。
ADQuery.Params.ParamByName('MyFld').AsWideString
但是当字符串变得太长时,我收到错误:
[MyFld]. Max len = [8002], actual len = [10522]
然后我决定使用AsMemo属性
ADQuery.Params.ParamByName('MyFld').AsMemo
在这种情况下,我的Unicode字符串无法正确显示。
解决这两个问题的方法是什么?
答案 0 :(得分:4)
TFDParam类型在XE5中有一个.AsWideMemo,它应该正确接受unicode字符并绕过你遇到的大小限制。
ADQuery.Params.ParamByName('MyFld').AsWideMemo := 'Some unicode string';
答案 1 :(得分:3)
实际数据库字段分配了最大字符数限制。您无法设置超出该限制的值。它会截断该值,或者在您的情况下,会引发错误。您无法使用AsMemo
设置非备注字段。继续使用AsWideString
并注意数据库布局。