It looks like in the latest version of DA 8 and the previous one (7), the Schema modeler changes WideMemo field data type to Memo thus creating error messages such as:
Debugger Exception Notification
Project xxx.exe raised exception class EDAException with message 'Format of the data in the stream doesn’t match the destination table format.
Data type mismatch for column ‘projects.comment’: datWideMemo expected but datMemo found in stream.
’.
How to reproduce:
When you change a field from Memo to WideMemo, then close the schema modeler: the modification is taken into account and the app is working fine. But when you re-open the Schema modeler, all WideMemo revert to Memo and if you forget to update them, when you close the Schema modeler next time, the Memo type is saved and used by the app.
FWIW, I have several nvarchar(max) fields in my database which come through to the schema correctly as WideMemo fields and don’t seem to revert back to Memo fields.
Might be handy to specify what database and driver you’re using and the field type in question for the RO guys to help out with
My schema is already defined with WideMemo but when I open the schema editor and close it, it reverts back to Memo for all the WideMemo fields.
I’m using UniDac with SQLite but no connections are defined in the Schema editor as I create them by code.
First of all I’m sorry for inconvenience. I’m trying to reproduce your situation but so far with no success.
In any simple scenario with my test SQLite database and UniDac driver it allows me to manually change and save fields datatype from datMemo to datWideMemo and and vice versa without any problem.
Though during investigation I found one problem but for much more sophisticated scenario. For example if you had certain field with datatype as datBlob and set its blob subtype as Memo or OraClob, later when you switch its type to datWideString then value in BlobType remains (in spite of the blobType combo becomes disabled) and during saving that BlobType can force schema to change that field to datMemo.
I have certain doubts that you have the same scenario, though can you check your schema? What value has DataType property for your field that incorrectly saved?
Actually it could help me if you can send me your DASchema to allow me to try to reproduce that at my side.
You can send it directly to support@
yeah I received your schema, though there was no instruction to reproduce.
I’ve played with the schema a bit and seems I could see your problem at the “hndmeta” table.
What I did is tried to change dataType to datWideString for the field “value” but it always remains as datMemo.
As it turned out this is the same problem I’ve suggested before.
For some reasons - this field has BlobType property set to Memo and this forces the DA consider this field as the Memo field.
I already registered it as the bug #68594 and we will fix it for next release.
As the temporary workaround you need to set BlobType for such field to “Unknown”.
But BlobType combobox is enabled only when field type is Blob.
So you need to do following:
change field DataType to Blob
change field BlobType to Unknown
change field DataType to WideString and set proper size for it.
save.
As I can see, you probably will need to perform that operation at following fields that have BlobType as Blob:
FWIW instructions were in the e-mail body, perhaps “Marvin, your faithful if slightly depressed RemObjects Software Support Robot” cut that part when it received it It might be worth checking.
Anyways, here they are for future reference:
Double click on the schema to open the schema editor
Select Tables / HndMeta / Fields
Change the field named “value” from “Memo” to “WideMemo”
Save and close the schema editor
Re-open: field type changes back from WideMemo to Memo
Using Delphi XE3 with RO/DA 8.0.81.1131
I appreciate your help and I’m glad to see that RO/DA support is far better than what I used to experience for years.