在数据库管理系统中,查询的方式主要有以下几种:1.固定字段的单一查询。2.可选择字段的单一查询。3.限制若干个字段的多重查询。4.可任意选择字段的多重查询。前两种也称为单条件查询,后两种称为多重(或多条件)查询。
在实际中,系统(实为程序员)提供给用户的查询方式以单条件查询为多,即使提供了多条件方式,通常也只有两或三个条件,因为编写多重查询是一项非常棘手且烦琐的事情。实际上,利用表格Grid功能,就能轻松地实现多重查询。本人以Delphi为例,介绍具体的实现方法。这种思想,也同样适合于其他的编程语言(如Visual Foxpro)。
程序主要按如下三个功能来实现:
设置DBGrid;
生成查询条件(语句);
执行查询。
具体步骤如下:
⑴新建一工程文件,取名为PDBGrid.dpr;
⑵给单元文件取名为UDBGrid.pas,在其相应的表单(取名为frmDBGrid)中添加如下控件并编写相应的代码:
其中Table2(记录查询条件的数据集)对应的表 CxComm.db的结构定义如下:
表单的FormActivate事件代码如下:
procedure TfrmDBGrid.FormActivate(Sender: TObject);
begin
if Table2.Active then Table2.Close;
Table2.EmptyTable; //清空条件
Table1.Open;
Table2.Open;
end;
Button1(设置DBGrid)的Click事件代码如下:
procedure TfrmDBGrid.Button1Click(SenderTObject);
begin
MySetDBGrid(Table1,DBGrid2);
// MySetDBGrid为自定义过程
//以Table1为数据源,DBGrid2为记录筛选(查询)条件的表格
end;
Button2(生成查询)的Click事件代码如下:
procedureTfrmDBGrid.Button2Click(Sender:TObject);
begin
if MyCreate_SQL(Table1,Table2,Query1)
//MyCreate_SQL为自定义函数
//由指定数据来源表生成SQL,存入Query1
then begin
Memo1.Lines.Clear;
Memo1.Lines:=(Query1.SQL);
Memo1.Modified:=false;
end
end;