0

こんにちは、テンプレート関数の作成に助けが必要です (私が正しければ、c++ で知られているため)。私は Delphi XE2 を使用しており、MS Access データベースを使用してデータベース アプリケーションを作成しています。

問題は、異なるテーブルで同じことを行う関数がたくさんあることです。そのため、テンプレート関数を作成してから、さまざまなテーブルにさまざまなパラメーターを使用できると考えました。

たとえばLocate、テーブルまたはクエリで特定のレコードを検索する関数があります。今、これのテンプレート機能を作りたいのですが、これを行う方法がわかりません。

関数をデータモジュールの公開セクションに入れたいので、この行で考えていました

function find(tableName: TADOTable, fieldName: String, fieldValue: String):Boolean

それで...

function TDataModule.find(tableName: TADOTable, fieldName: String, fieldValue:String): Boolean;
var SearchOptions : TLocateOptions;
 begin
  SearchOptions := [loCaseInsensitive]; 
  find := DataModule.tableName.Locate('fieldName', fieldValue, SearchOptions);
 end;

しかし、これはコンパイルしたくない...

任意のテーブルをパラメーターとして渡すことができる何らかのテンプレート関数を作成する方法はありますか、またはゲッター関数とセッター関数を使用して、すべてのテーブルのクラスを作成する方がよいでしょうか?

4

1 に答える 1

0
function TDataModule2.LocateData(AADOTable: String; AKeyFields: String; 
  AKeyValues: Variant; Options: TLocateOptions): Boolean;
var
  oComp: TComponent;
begin
  Result := False;
  oComp := FindComponent(AADOTable);
  if (oComp is TADOTable) and (oComp as TADOTable).Active then
    Result := (oComp as TADOTable).Locate(AKeyFields, AKeyValues, Options);
end;
于 2012-04-04T15:10:01.810 に答える