Page 1 of 1

[DXE5] TMemoField instead TSringField

Posted: Tue 08 Jul 2014 07:26
by ricolebo
Hello,

I try to migrate my application from D7 to DEX5 on WIN8
I have DBXDriver 4.3 with source and my dataBase is FireBird 2.5 (test done also with last version)


I have many persistents fields in the TClienDataSets, so to keep compatability between sources D7 and XE5 I set this options in connexion driver :
LongStrings False
UseUnicode False

With these options StringFields stay String and not wideString (it's what I want)

My problem is that StringField declared as varchar(2000) in the dataBase are considered now as TMemoField !! and these fields don't work in my application as memo.

So, What can I do to have fields declared as varchar(2000) taken as TSringField and not as TMemoField ?

To see this, just make persistant the fields of a ClientDataSet with a varchar(2000) in the select query.

Note : With DBXDriver Embarcadero fields varchar(2000) are seen as StringField

Thank in Advance for your help
Eric

Re: [DXE5] TMemoField instead TSringField

Posted: Tue 08 Jul 2014 12:59
by PavloP
In order for a varchar(2000) field to be mapped as TStringField, use the following values for dbExpress driver for InterBase and Firebird:

LongStrings=True
UseUnicode=False.

Re: [DXE5] TMemoField instead TSringField

Posted: Tue 08 Jul 2014 13:57
by ricolebo
Thank you very much PavloP !
It works perfect now

Eric

Re: [DXE5] TMemoField instead TSringField

Posted: Tue 08 Jul 2014 14:00
by PavloP
If any other questions come up, please contact us.