Get error with driver 6.4.6 on XE6: Type mismatch for field, expecting: FMTBcdField actual: BCD.
Posted: Wed 06 Aug 2014 18:06
Hello,
We recently upgraded to Delphi XE6 and also updated our Devart drivers to the latest versions (both Oracle and SQLServer).
We have a very large client/server product with many persistent fields in various TClientDatasets. We use the database datatype numeric(m,p) on SQLServer (and number(m,p) on Oracle) for many persistent fields, mostly on the client-side. The corresponding persistent fields are currently defined as TFMTBCDField types. This worked correctly on Delphi XE2 and using the 6.0.1 driver.
Now with the current drivers (6.4.6 on SQLServer and 6.4.7 on Oracle) we are getting the error "Type mismatch for field, expecting: FMTBcdField actual: BCD" throughout our suite of applications.
This behavior seems to run counter to the documentation in the ReadMe.html that came with this version. For SQL Server, it indicates:
SQL Server type: numeric
Field type: ftFMTBcd
Field class: TFMTBCDField
The Oracle ReadMe is similar for the number datatype, and also indicates that there is a BCDPrecision property for which "[t]he default value of this option is '0,0' (do not use TBCDField)". Since we do not use the BCDPrecision property, I would assume the default would hold and that TFMTBCDField would be used instead of TBCDField.
Is this a bug? If so, is a fix planned relatively soon? Is there a work-around?
Or is this intended behavior? If so, does the documentation need updating? What was the reason for this change?
We would have to update hundreds of declarations in hundreds of source files, but I can use a grep tool to do it. I would rather not, especially if this is something that will be changed again in the future.
Thank you for your time.
We recently upgraded to Delphi XE6 and also updated our Devart drivers to the latest versions (both Oracle and SQLServer).
We have a very large client/server product with many persistent fields in various TClientDatasets. We use the database datatype numeric(m,p) on SQLServer (and number(m,p) on Oracle) for many persistent fields, mostly on the client-side. The corresponding persistent fields are currently defined as TFMTBCDField types. This worked correctly on Delphi XE2 and using the 6.0.1 driver.
Now with the current drivers (6.4.6 on SQLServer and 6.4.7 on Oracle) we are getting the error "Type mismatch for field, expecting: FMTBcdField actual: BCD" throughout our suite of applications.
This behavior seems to run counter to the documentation in the ReadMe.html that came with this version. For SQL Server, it indicates:
SQL Server type: numeric
Field type: ftFMTBcd
Field class: TFMTBCDField
The Oracle ReadMe is similar for the number datatype, and also indicates that there is a BCDPrecision property for which "[t]he default value of this option is '0,0' (do not use TBCDField)". Since we do not use the BCDPrecision property, I would assume the default would hold and that TFMTBCDField would be used instead of TBCDField.
Is this a bug? If so, is a fix planned relatively soon? Is there a work-around?
Or is this intended behavior? If so, does the documentation need updating? What was the reason for this change?
We would have to update hundreds of declarations in hundreds of source files, but I can use a grep tool to do it. I would rather not, especially if this is something that will be changed again in the future.
Thank you for your time.