views:

437

answers:

1

Hello,
I'm having a problem with Delphi 6 + Oracle 10gR2 + ADO + ClientDataSet. Whenever I run a aggregate function on a field NUMBER(19,9), the resulting column returns a NUMBER datatype to Delphi, and on some machines it loads as a TBCDField with a precision of 38, and everything goes well, but on some machines it loads as a TBCDField with a precision of 255, and I get a BCD overflow on the field.
To replicate the problem, just create a table with a column NUMBER (19,9), and run a SELECT SUM(column_name) column_name FROM table_name GROUP BY column_name. Despite the fact that the column is a NUMBER(19,9), the resulting column will be a NUMBER with no precision defined. In Delphi, load the query into a ADOQuery, with a DataSetProvider linked to it and a ClientDataSet linked to the DataSetProvider. After I call the ClientDataSet.Open, on some machines I get a BCD overflow message on the NUMBER field, but in a lot of machines it works nice.
Why am I getting this 255 precision on some machines, when the midas.dll, ADO, server, user, oracle client are all the same on both machines? Any ideas?
Thanks

A: 

I don't have any definitive answer for your, but are you positive you have the same versions of the client dlls on both machines? There may be other software installed that is interfering. Try running Windows Process Explorer on the client machines and confirm that the dlls you think you are using are the ones that are actually being used by your client applications.

Steve Broberg
I'll try using Process Explorer. Good idea. But both machines have the same client, I'm sure
Pascal