1、 设计通用查询窗口,严格的说这是一个目前只适合数据库表中字符串类型或相似类型的查询窗口,数字类型不支持,不过稍加修改(增加一个类型选择,判断处理即可)就可支持。窗体的界面如下: 相关代码如下: unit GenQueryBox; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, ComCtrls, Buttons, StdCtrls, DB, ADODB; type TGenQueryBoxFrm = class(TForm) Panel1: TPanel; Panel2: TPanel; Label1: TLabel; Label2: TLabel; Label3: TLabel; cbFieldName: TComboBox; cbSymbol: TComboBox; cbValue: TComboBox; Label4: TLabel; btnInit: TSpeedButton; btnAnd: TSpeedButton; btnOr: TSpeedButton; btnClear: TSpeedButton; btnResult: TSpeedButton; btnGiveup: TSpeedButton; ADOQuery1: TADOQuery; Panel3: TPanel; Panel4: TPanel; mCon: TMemo; ADOConnection1: TADOConnection; procedure FormCreate(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure FormActivate(Sender: TObject); procedure btnInitClick(Sender: TObject); procedure btnAndClick(Sender: TObject); procedure btnOrClick(Sender: TObject); procedure btnClearClick(Sender: TObject); procedure btnResultClick(Sender: TObject); procedure btnGiveupClick(Sender: TObject); procedure cbFieldNameChange(Sender: TObject); private { Private declarations } procedure BtnValid; //按钮互斥 procedure getParams(var qStr1, qStr2, qStr3: String); //获取串联的字符串子串 procedure getAllValues; //根据字段名获取全部的字段值 public pTableName: String; //表名 pFields: TStrings; //字段列表 isConf: Boolean; //判断是否按下缺人按钮,没按下代表放弃 filterValue: String;//过滤的条件值 end; var GenQueryBoxFrm: TGenQueryBoxFrm; implementation {$R *.dfm} { TForm1 } procedure TGenQueryBoxFrm.BtnValid; begin btnInit.Enabled := not btnInit.Enabled; btnAnd.Enabled := not btnAnd.Enabled; btnOr.Enabled := not btnOr.Enabled; btnClear.Enabled := not btnClear.Enabled; btnResult.Enabled := not btnResult.Enabled; btnGiveup.Enabled := not btnGiveup.Enabled; end; procedure TGenQueryBoxFrm.FormCreate(Sender: TObject); begin pFields := TStringList.Create; isConf := False; self.cbSymbol.Items.Clear; self.cbSymbol.Items.Add('='); self.cbSymbol.Items.Add('>'); self.cbSymbol.Items.Add('>='); self.cbSymbol.Items.Add('<'); self.cbSymbol.Items.Add('&l