📄 gen_q.pas
字号:
unit Gen_Q;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, DBTables, StdCtrls, Buttons, ExtCtrls, ComCtrls, DBClient;
type
TF_Query = class(TForm)
StatusBar1: TStatusBar;
Panel2: TPanel;
btn_cs: TSpeedButton;
btn_bq: TSpeedButton;
btn_hz: TSpeedButton;
btn_qktj: TSpeedButton;
btn_jgxs: TSpeedButton;
btn_fq: TSpeedButton;
Panel1: TPanel;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
btn_ListAll: TSpeedButton;
Cmb_zdm: TComboBox;
Cmb_czf: TComboBox;
Cmb_zdz: TComboBox;
Memo1: TMemo;
ClientDataSet1: TClientDataSet;
procedure btn_csClick(Sender: TObject);
procedure btn_bqClick(Sender: TObject);
procedure btn_hzClick(Sender: TObject);
procedure btn_qktjClick(Sender: TObject);
procedure btn_jgxsClick(Sender: TObject);
procedure btn_fqClick(Sender: TObject);
procedure btn_ListAllClick(Sender: TObject);
procedure btn_valid;
procedure Cmb_zdmChange(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
public
AppServName: TCustomRemoteServer; //应用服务器连接的名字
ProviderName: string; //应用服务器数据提供的接口
TableName: string; //查询的数据表名
fields: TStrings; //查询的字段列表
fieldsAlias: TStrings; //查询的字段列表相对应的别名
Conf: boolean; //判断是否按下确认按钮,还是放弃
filtervalue: string; //过滤的条件值
{ Public declarations }
end;
var
F_Query: TF_Query;
strsql:string;
implementation
USES MAIN,udm;
{$R *.dfm}
function restrsql(svalue,filds:string;sm:Tmemo):string;
var
SelPos: Integer;
begin
result:=sm.Lines.CommaText;
SelPos := Pos(svalue, sm.Text);
if SelPos > 0 then
begin
sm.SelStart := SelPos - 1;
sm.SelLength := Length(svalue);
sm.SelText :=filds;
end ;
result:=sm.Lines.CommaText;
end;
function resvalue(s:string):string;
var
SelPos: Integer;
s_value:string;
begin
selPos:=Pos(';',s);
s_value:=copy(s,selPos+1,length(s)-selPos);
strsql:=COPY(S,1,selPos-1) ;
result:=trim(s_value);
end;
//用于互置按钮的有效性
procedure TF_Query.btn_valid;
begin
btn_cs.enabled := not btn_cs.enabled;
btn_bq.enabled := not btn_bq.enabled;
btn_hz.enabled := not btn_hz.enabled;
btn_qktj.enabled := not btn_qktj.enabled;
btn_jgxs.enabled := not btn_jgxs.enabled;
end;
//当窗体创建时,初始化相关资源
procedure TF_Query.FormCreate(Sender: TObject);
begin
fields := Tstringlist.Create;
fieldsAlias := TStringList.Create;
Conf := False;
//向操作符下拉框添加操作符
cmb_czf.items.Clear;
cmb_czf.Items.Add('=');
cmb_czf.Items.Add('>');
cmb_czf.Items.Add('>=');
cmb_czf.Items.Add('<');
cmb_czf.Items.Add('<=');
cmb_czf.Items.Add('<>');
cmb_czf.Items.Add('like');
end;
//窗体关闭,释放相关资源
procedure TF_Query.FormClose(Sender: TObject; var Action: TCloseAction);
begin
fields.free;
fieldsAlias.free;
end;
//当窗体激活时,向字段名下列框添加值
procedure TF_Query.FormActivate(Sender: TObject);
begin
cmb_zdm.Items.AddStrings(fieldsAlias);
end;
//初始按钮点击过程
procedure TF_Query.btn_csClick(Sender: TObject);
var
xx101: string;
xx101Name: string;
xx201: string;
xx301: string;
begin
if trim(cmb_zdm.Text) = '' then
begin
showmessage('字段名不能为空');
exit;
end;
if trim(cmb_czf.Text) = '' then
begin
showmessage('操作符不能为空');
exit;
end;
// xx101 := Cmb_zdm.items.strings[cmb_zdm.itemindex];
xx101 := trim(Cmb_zdm.Text);
xx101Name :=resvalue(trim(xx101));
xx101 := strsql ;
//xx201 := cmb_czf.items.strings[cmb_czf.itemindex];
xx201 := trim(cmb_czf.Text);
if xx201 = 'like' then
xx301 := '%' + Cmb_zdz.text + '%'
else
xx301 :=trim(cmb_zdz.text);
filtervalue := xx101Name + ' ' + xx201 + ' ''' + xx301 + ''' ';
memo1.lines.add(xx101 + ' ' + xx201 + ' ' + cmb_zdz.text);
btn_valid;
end;
//并且按钮点击过程
procedure TF_Query.btn_bqClick(Sender: TObject);
var
xx102: string;
xx102Name: string;
xx202: string;
xx302: string;
begin
if trim(cmb_zdm.Text) = '' then
begin
showmessage('字段名不能为空');
exit;
end;
if trim(cmb_czf.Text) = '' then
begin
showmessage('操作符不能为空');
exit;
end;
{ xx101 := trim(Cmb_zdm.Text);
xx101Name :=resvalue(trim(xx101));
xx101 := strsql ;
//xx201 := cmb_czf.items.strings[cmb_czf.itemindex];
xx201 := trim(cmb_czf.Text);
if xx201 = 'like' then
xx301 := '%' + Cmb_zdz.text + '%'
else
xx301 :=trim(cmb_zdz.text);}
xx102:=trim(Cmb_zdm.Text);
xx102name:=resvalue(trim(xx102));
xx102 := strsql ;
//xx102 := cmb_zdm.items.strings[cmb_zdm.itemindex];
// xx102Name := fields[cmb_zdm.itemindex];
// xx202 := cmb_czf.items.strings[cmb_czf.itemindex];
xx202 := trim(cmb_czf.Text);
if xx202 = 'like' then
xx302 := '%' + cmb_zdz.Text + '%'
else
xx302 := cmb_zdz.Text;
filtervalue := filtervalue + ' and ' + xx102Name + ' ' + xx202 + ' ''' + xx302 + ''' ';
memo1.lines.add('并且 ' + xx102 + ' ' + xx202 + ' ' + cmb_zdz.text);
end;
//或者按钮点击过程
procedure TF_Query.btn_hzClick(Sender: TObject);
var
xx103: string;
xx103Name: string;
xx203: string;
xx303: string;
begin
if trim(cmb_zdm.Text) = '' then
begin
showmessage('字段名不能为空');
exit;
end;
if trim(cmb_czf.Text) = '' then
begin
showmessage('操作符不能为空');
exit;
end;
{ xx103 := cmb_zdm.items.strings[cmb_zdm.itemindex];
// xx103Name := fields[cmb_zdm.itemindex];
xx203 := cmb_czf.items.strings[cmb_czf.itemindex]; }
xx103:=trim(Cmb_zdm.Text);
xx103name:=resvalue(trim(xx103));
xx103 := strsql ;
xx203:= cmb_czf.Text;
if xx203 = 'like' then
xx303 := '%' + cmb_zdz.Text + '%'
else
xx303 := cmb_zdz.Text;
filtervalue := filtervalue + ' or ' + xx103Name + ' ' + xx203 + ' ''' + xx303 + ''' ';
memo1.lines.add('或者 ' + xx103 + ' ' + xx203 + ' ' + cmb_zdz.text);
end;
//清空条件按钮点击过程
procedure TF_Query.btn_qktjClick(Sender: TObject);
begin
memo1.lines.clear;
cmb_zdm.setfocus;
btn_valid;
end;
//结果显示按钮点击过程
procedure TF_Query.btn_jgxsClick(Sender: TObject);
begin
Conf := True;
Close;
end;
//放弃按钮点击过程
procedure TF_Query.btn_fqClick(Sender: TObject);
begin
Close;
end;
//根据字段名列表框列出数据库中存在的值
procedure TF_Query.btn_ListAllClick(Sender: TObject);
var
s_value, s_value1: string;
// generalquery: TClientDataset;
begin
cmb_zdz.items.clear;
// if cmb_zdm.ItemIndex < 0 then
// exit;
s_value := trim(Cmb_zdm.Text);
// s_value := Cmb_zdm.items.strings[cmb_zdm.itemindex];
s_value :=resvalue(trim(s_value));
dm.aQry_General.close;
dm.aQry_General.SQL.Clear ;
dm.aQry_General.SQL.Add('select distinct ' + s_value + ' from ' + tablename) ;
try
dm.aQry_General.open;
except
ShowMessage('列举出错');
exit;
end;
dm.aQry_General.First;
while not dm.aQry_General.eof do
begin
s_value1 :=Trim(dm.aQry_General.fieldbyname(s_value).asstring);
cmb_zdz.Items.Add(s_value1);
dm.aQry_General.Next;
end;
dm.aQry_General.SQL.Clear ;
dm.aQry_General.close;
end;
//当字段名改变时,清空字段值下拉框
procedure TF_Query.Cmb_zdmChange(Sender: TObject);
begin
cmb_zdz.Items.Clear;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -