3

すべての ADO フードを別のデータ モジュールにオフロードしたので、1 つのモジュールを複数のアプリケーションから参照できます。私のすべてのアプリケーションは基本的に、データにアクセスするために2 つのワーカーメソッドのみを必要とします。

AdoQueryの形式で結果セットを提供しTADODataSetます。
AdoExecute結果をフェッチせずに単純な更新/削除クエリを実行します。

クラス構造は次のとおりです。

type
  TMyDataModule = class(TDataModule)
    procedure DataModuleCreate(Sender: TObject);
    procedure DataModuleDestroy(Sender: TObject);
  private
    procedure pvtAdoConnect;
    procedure pvtAdoExecute(const sql: string);
    function pvtAdoQuery(const sql: string): TADODataSet;
  public
    AdoConnection: TADOConnection;
  end;

次に、公開されている 2 つのラッパーをクラス メソッドに追加しました。これを使用して、呼び出しでの長いクラス参照を回避しました。

function AdoQuery(const sql: string): TADODataSet;
procedure AdoExecute(const sql: string);

implementation

function AdoQuery(const sql: string): TADODataSet;
begin
  Result := MyDataModule.pvtAdoQuery(sql);
end;

上記は、すべてのフォーム内から呼び出すワーカー関数です。

AdoConnectイベントで一度だけ実行されDataModuleCreateます。から派生した TDatModule TPersistent。これにより、ランタイム全体で接続の単一インスタンスを永続化できます。

これまでのところ私を悩ませている唯一のことは、まったく必要のない役に立たない.DFMです。
それを取り除くオプションはありますか?

4

3 に答える 3