I've also encountered this issue. While I don't know what causes Microsoft Access to lower the limit from 255 to 127, I
do know what causes
fcl-db to use the short text type.
Parameter types aren't known until they are assigned, and
TParam.SetAsString sets the field type to
ftString.
The problem is that
TODBCConnection maps
fcl-db's
ftString to ODBC's
SQL_VARCHAR type, which in turn is further limited by Microsoft Access (or rather the Microsoft JET Engine).
For large text you'll want to use ODBC's
SQL_LONGVARCHAR type, which is mapped to
ftMemo by
fcl-db.
This means that you'll have to use TParam.AsMemo instead of TParam.AsString.
I was initially confused by how similiar
TField and
TParam look when used (e.g.
FieldByName('foo').AsString and
ParamByName('bar').AsString), despite the fact that they are quite different in some ways.
For example,
TField has no
AsMemo property;
AsString just works.
TParam however needs to make this distinction, introducing a subtle pitfall (in my opinion).
Sidenote:
TParam.AsLargeInt is paywalled by Microsoft (!!!), so you'll have to stick to
TParam.AsInteger instead:
Note: The Large Number data type is only available if you have an Office 365 subscription.