7

大規模なアプリケーションを 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 を使用してアクセスされます。

何か案は?

4

1 に答える 1

0

DBXpress アプリケーションを Oracle 9 と 11 の両方で動作させる必要があるときに、同様の問題が発生しました。何らかの理由で、DBXpress は、Oracle データベースのバージョンに応じて、いくつかの NUMBER フィールドを異なる方法で認識します。数値フィールドをより大きな数値フィールドにキャストし、すべてのクエリで FMTBCD フィールドの BCD フィールドを変更することで、この問題を回避しました。キャストにより、DBXpress はすべての NUMBER を FMTBCD として認識するようになりました。これは、BCD がそのような大きな数値をサポートできないためです。 ADO でも動作します。

于 2013-05-03T13:18:57.517 に答える