Pass long Unicode strings to FireDac TADQuery parameter

2.6k views Asked by At

I was using AsWideString to pass Unicode string to TADQuery parameter.

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

But when string becomes too long I got error:

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

Then I decided to use AsMemo property

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

In this case my Unicode string is not displayed correctly.

What is the way to solve both problems?

2

There are 2 answers

2
Remy Lebeau On

The actual database field has a max character limit assigned to it. You cannot set a value that exceeds that limit. It will either truncate the value, or in your case, raise an error. You cannot use AsMemo to set a non-Memo field. Keep using AsWideString and pay attention to your database layout.

0
Jason Southwell On

The TFDParam type has an .AsWideMemo in XE5 that should accept unicode characters correctly and get around the size limitation you encountered.

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