打印本文 打印本文 关闭窗口 关闭窗口
通用查询组件设计
作者:武汉SEO闵涛  文章来源:敏韬网  点击数2211  更新时间:2009/4/23 18:44:47  文章录入:mintao  责任编辑:mintao

通用查询组件设计

作者:nxyc_twz@163.com

 

在当前的MIS系统中,数据维护与数据查询是其两个核心功能。如何设计一个通用的查询组件,使开发的MIS系统中具备统一的查询界面,是MIS系统开发人员一直在偿试解决的问题。笔者在多年的MIS系统的开发设计过程中,经过不断的摸索与实践,终于设计完成了这套相对比较完善、通用的查询组件。

 

该组件继承自Tcomponet组件,主要包括一个查询窗体及一个显示查询摘要的窗体。主要设计思路是通过设置Tquery组件的Params(参数)以达到通用查询的目的。关于如何设计自定义组件,请参考:创建定制组件

现将其设计思路与技巧公布出来,与广大编程爱好者共勉。定义通用查询类

 

在指定字符串中查找字符串

function WordPos(const AWord, AString: string): Integer;

//在指定字符串中查找字符串

var s: string;

    i, p: Integer;

begin

  s := '''' '''' + AnsiUpperCase(AString) + '''' '''';  //忽略大小写

  for i := 1 to Length(s) do if not (s[i] in Identifiers) then s[i] := '''' ''''; //常量定义

  p := Pos('''' '''' + AnsiUpperCase(AWord) + '''' '''', s);  

  Result := p;

end;

 

定义通用查询类

type

  TDBFilterDialog = class(TComponent)

  private

    FDialog : TMyDBFilterDialog;//查询窗体类

    FOriginalSQL : TStrings;//原来的SQL语句

    FModifiedSQL : TStrings;//修改后的SQL语句

    FDataSet : TQuery;//数据集

    FDefaultMatchType : TDBFilterMatchType;//过滤类型

    FOptions : TDBOptions;//过滤选项

    FCaption: String;//窗体标题

    FFields: TStringList;//字段列表

    FOriginalVariables : TList;//变量列表

    SQLProp : String;//SQL属性

    procedure SetDataSet(const Value: TQuery);//设置数据集

    procedure SetOptions(const Value: TDBOptions);//设置选项

    procedure SetCaption(const Value: String);//设置标题

    procedure SetDefaultMatchType(const Value: TDBFilterMatchType);//设置默认的匹配类型

    procedure SetFields;//设置字段

    procedure SetFieldsList(const Value: TStringList);//设置字段列表

    procedure SetOriginalSQL(const Value: TStrings);//设置SQL

    procedure RestoreSQL;//恢复SQL

    procedure SaveParamValues;//保存参数值

    { Private declarations }

  protected

    { Protected declarations }

    procedure Loaded; override;//装载过滤对话框

    procedure Notification(AComponent: TComponent;

      Operation: TOperation); override;//传送消息

    property OriginalSQL : TStrings read FOriginalSQL write SetOriginalSQL;

  public

    { Public declarations }

    constructor Create(AOwner : TComponent); override;//构造函数

[1] [2]  下一页

打印本文 打印本文 关闭窗口 关闭窗口