すべての 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です。
それを取り除くオプションはありますか?