変換する
チェックはあなたにも動的SQLを使用したパラメータを使用することができるはずです。私は自分のOPFフレームワークのいくつかのバージョンでこれを行っています。
パラメータを使用してSQL文を書き、それを文字列としてTAdoQuery(またはTAdoCommand)のSQLテキストに割り当てます。コンポーネントはテキストを解析し、パラメータコレクションを設定する必要があります。その後、あなたのパラメータに値を代入し、[開く]を呼び出したり、実行することができるはず...
あなたのアイデアを与える:
:FillSelectParamsは以下FillParamsプロシージャを呼び出し
する
DS := DatasetClass.Create(self.Connection);
try
DS.QueryText := SQL.Text;
FillSelectParams(DS);
DS.Open;
try
...
finally
DS.Close;
end;
finally
DS.Free;
end;
この場合、パラメータ値はカスタムドメインオブジェクト(CDO)から取得されますが、ここで独自の味を使用することができます。
AdjustParamValue関数は、いくつかの変換を処理します。異なるTDataSetの子孫との部品のばらつきの世話をするために、使用TCustomDataSetクラスの子孫のADOのバージョンで実装されていないが、どこにもSQLデータベースのタイプが遊びに来るん:
function TADODCDataset.AdjustParamValue(Attr: TCustomDomainAttribute): Variant;
begin
if Attr is TIdentityAttribute then begin
if Attr.AsInteger = 0 then begin
Result := Null;
end else begin
Result := Attr.Value;
end;
end else if Attr is TBooleanAttribute then begin
if Attr.AsBoolean then begin
Result := Integer(-1);
end else begin
Result := Integer(0);
end;
end else if Attr is TDateTimeAttribute then begin
if Attr.AsDateTime = 0 then begin
Result := Null;
end else begin
Result := Attr.Value;
end;
end else if Attr is TEnumAttribute then begin
Result := Attr.AsString
end else begin
Result := Attr.Value;
end;
end;
ありがとう、このようなシステムは私が私の既存のコードに適応できない場合、私がしなければならないと思っていたものです。私の考えは、独自のTParametersオブジェクト(パラメータ化されたSQLからデータセットによって生成されたオブジェクトではない)を作成し、それをFillParamsメソッドに非常に似たバインディング関数に渡すことでした。 –
これは私がやっていることです。 –