1

DBF/MDX データ ファイルを使用して、BDE を使用して Delphi アプリケーションを、ローカル データ ファイルを使用して DBExpress に移行しようとしています。

TTable コンポーネントを TClientDataset に置き換えるだけで、インデックス プロパティに関するエラーが発生しました。

私はそれをグーグルで検索しましたが、私が思いついたのは、インデックスについて言及されておらず、ソート方法の使用方法を示していないボブ博士の記事だけです。他のすべての記事は DBExpress の一般的な説明であり、私に関係する詳細はありません。

従うべき手順のチュートリアル/例はありますか?

4

3 に答える 3

1

残念ながら、TClientDatasetローカルファイルは、ローカルデータベースエンジンとしてのBDEに代わるものではありません。基本的に、これらはメモリ内のデータセットであり、データをディスクに保存する機能を備えています。ただし、BDEにある多くの機能が不足しています。ニーズが最小限であれば機能しますが(クライアントデータセットのTIndexDefsプロパティ内でインデックスを定義できます)、必要なものではない可能性があります。

さらに、TClientDatasetはdbExpress関連のコンポーネントではありません。これらは実際には、多層アプリケーションのリモートデータセットに対応するクライアント(名前の由来)としてMIDAS(後にDatasnapに名前が変更されました)で導入されました(ディスクストレージの機能により、切断された操作が可能になります)。

dbExpressは、ODBC / BDE / OLEDBと同様に、「ドライバー」を介してさまざまなデータベースサーバーと連携できるデータアクセスレイヤーです。dbExpressには単方向データセットのみを含めることが決定され、既存のTClientDatasetのキャッシング/カーソル機能を再利用して双方向カーソルとキャッシュを提供します。TClientDatasetのみを使用している場合は、dbExpressをまったく使用しておらず、TClientDatasetは、必要なインターフェイス(BDEインターフェイスを含む)を実装する任意のデータセットで機能します。

SQLite、Firebird(ローカルアクセスのみが必要な場合は「組み込み」バージョンがあります)、小型で無料のエンジン(MySQLはアプリケーションがGPLの場合のみ無料)を探している場合はPostgresなどの代替手段を検討する必要があります。市販のエンジン(つまり、SQL ServerExpressとOracleExpress)の簡略版、または比較的安価なエンジンから利用できる他のいくつかのエンジンがあります。

于 2012-02-06T15:46:46.527 に答える
1

IMHO、TTable、および TClientDataSet は、データ アクセス方法が大きく異なります。2 つの移行パスを提案します。

  1. DBF/MDXについてもおっしゃっていましたが、Advantage DatabaseとTAdsTableに注目してください。TClientDataSet や dbExpress よりも TTable との互換性が高いことがわかります。
  2. AnydacとそのTADTableを移行パスとして検討してください。TADTable は、他の Anydac 機能に加えて、互換性があり、より高速な TTable の代替品のように見えます。
于 2012-02-06T15:38:38.023 に答える
0

それをやっている人が見つからないのには理由があります。それは単に悪い考えではなく、おそらくほぼ不可能です。

ClientDataSet は「これまでに必要な唯一のデータベース」とは考えられないため、使用をやめて、IBObjects [商用!] と Firebird [無料]、または dbExpress の使用を検討することをお勧めします。 + サポートされている SQL Db、または Delphi に付属する Interbase Express (IBX) コンポーネント。

BDE や、dBase、Access、または Paradox テーブルで慣れていた可能性のある機能セットを置き換えるには、完全なリレーショナル SQL dbms が必要であることがわかります。

その場合、通常のチュートリアルが状況に完全に適用されます。

于 2012-02-06T20:20:50.613 に答える