与TBCDField和TfmtBCDfield类型不匹配以及oracle兼容性有问题

Des*_*her 7 delphi oracle11g

我正在将一个大型应用程序从Delphi 6转换为Delphi 2009.

它最初是为使用Oracle 8i而构建的,但现在需要使用Oracle 11g.原始应用程序很高兴使用oracle 11g,如果我使用Delphi 6重建它,它将会这样做.

为了克服一些字符集/字符显示问题以及过去11年中开发的应用程序的其他轻微烦恼,我决定在更高版本的Delphi中重建它(它也被延迟了几年,因此使用2009.)为此目的而购买的.我现在已经打败了关于这个和那个以及另一个的550+编译器警告.

但是现在几乎我试图打开我的测试oracle 11g数据库的每个表/数据集报告"类型不匹配字段'xxxxxx'期望BCD实际FmtBCDField.

有没有办法绕过这个没有打开所有80多个数据模块,以保证与客户端数据库安装的兼容性?我不介意改变它们,但我不能在没有太多麻烦的情况下对着实时数据库进行测试,并且不想只是为了在客户端的网站上得到相反的错误!

这些几乎都是连接到ADO查询的TClientDataSets中的所有持久字段,但是在(几乎所有)情况下都使用FieldByName进行访问.

有任何想法吗?

Dan*_*ula 0

当我需要 DBXpress 应用程序与 Oracle 9 和 11 一起使用时,我遇到了类似的问题。由于某种原因,DBXpress 根据 Oracle 数据库版本以不同的方式识别某些 NUMBER 字段。我通过将数字字段转换为更大的数字字段并在所有查询中将 BCD 字段更改为 FMTBCD 字段来解决这个问题,转换迫使 DBXpress 将每个数字识别为 FMTBCD,因为 BCD 无法支持这么大的数字,也许它会也在 ADO 上工作。