7

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

它最初是为使用 Oracle 8i 而构建的,但现在需要使用 Oracle 11g。原始应用程序非常愉快地使用 oracle 11g,如果我使用 Delphi 6 重新构建它,它将这样做。

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

但是现在几乎我尝试针对我的测试 oracle 11g 数据库打开的每个表/数据集都报告“字段‘xxxxxx’的类型不匹配,期望 BCD 实际 FmtBCDField。

有没有办法在不打开所有 80 多个数据模块的情况下解决这个问题,以保证与客户端数据库安装的兼容性?我不介意全部更改它们,但我无法在没有大量混乱的情况下针对实时数据库对其进行测试,并且不想这样做只是为了在客户的站点上得到相反的错误!

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

有任何想法吗?

4

1 回答 1

0

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

于 2013-05-03T13:18:57.517 回答