【DO!BOOK・ページリンク】
2009_migaro_techreport_001   21 / 80

BOOKをみる

10秒後にBOOKのページに移動します


19 // 商品マスタのSQL を構築します procedure TfrmMIM020.BuildSQL(qry: TQuery); var //1 画面内の条件数、条件画面数 CCnt, LCnt: Integer; // 条件保存用構造体 CondRec: array [1..120] of RCond; // 条件保存用構造体のセット procedure SetParameter(Target: String; DataType: TFieldType; Value: String; cm: TCompareMode); overload; begin Inc(CCnt); with CondRec[CCnt] do begin case cm of cmEQ: RSQL := Format('(A.%s = :%0:s%d)', [Target, LCnt]); cmNE: RSQL := Format('(A.%s <> :%0:s%d)', [Target, LCnt]); cmGT: RSQL := Format('(A.%s > :%0:s%d)', [Target, LCnt]); cmGE: RSQL := Format('(A.%s >= :%0:s%d)', [Target, LCnt]); cmLT: RSQL := Format('(A.%s < :%0:s%d)', [Target, LCnt]); cmLE: RSQL := Format('(A.%s <= :%0:s%d)', [Target, LCnt]); cmLike: if AnsiPos('%', Value) > 0 then RSQL := Format('(A.%s LIKE :%0:s%d)', [Target, LCnt]) else RSQL := Format('(A.%s = :%0:s%d)', [Target, LCnt]); end; RParam := Format('%s%d', [Target, LCnt]); RDataType := DataType; RValue := Value; end; end; // 条件保存用構造体のセット - 汎用タイプ( 等号) procedure SetParameter(Target: String; DataType: TFieldType; Value: String); overload; begin SetParameter(Target, DataType, Value, cmEQ); end; // 条件保存用構造体のセット - 文字列タイプ(Like 検索) procedure SetParameter(Target: String; Value: String; isLike: Boolean = False); overload; begin if Value <> '' then if isLike then SetParameter(Target, ftString, Value, cmLike) else SetParameter(Target, ftString, Value); end; // その他、整数タイプ、チェックボックスタイプ、実数タイプ等を定義しています。 var i, idx, j: Integer; sWhereFr, sWhereTo: String; stWhere: TStringList; begin ソース1 商品マスタ抽出SQL構築