通过判断各edit是否为空来决定在查询条件中是否加入该edit的内容。下面是我的一个
实例。
//G_String是SQL语句用的字符串,这里先给出初始部分,在后面根据各edit内容增加。
G_String:='select Da_Nytd.*,T_Client.Hm,Dm_Nytd.Dm_Nytd_Mc from Da_Nytd,T_Client,Dm_Nytd where Da_Nytd.hh=T_Client.Hh and Da_Nytd.Xh=Dm_Nytd.Dm_Nytd_Xh';
G_Bool:=false; //G_Bool为false时表示各edit内容均为空,先将其初始化为false.
if trim(Edt_TjKhh.text)<>'' then //各以Edt_打头的都是edit控件。
begin
G_Bool:=true; //一有edit控件内容不为空,将G_Bool置为true.
if Pos('*',Edt_TjKhh.text)>0 then
G_String:=G_String+' and Da_Nytd.hh like '''+MP_ReplaceStr(trim(Edt_TjKhh.text),'*','%',true,true)+''''
else G_String:=G_String+' and Da_Nytd.Hh='''+trim(Edt_TjKhh.text)+'''';
end;
if trim(Edt_TjKhm.text)<>'' then
begin
G_Bool:=true;
if pos('*',Edt_TjKhm.text)>0 then
G_String:=G_String+' and T_Client.Hm like '''+MP_ReplaceStr(trim(Edt_TjKhm.text),'*','%',true,true)+''''
else G_String:=G_String+' and T_Client.Hm='''+Trim(Edt_TjKhm.text)+'''';
end;
if trim(Edt_TjGllx.text)<>'' then
begin
G_Bool:=true;
if pos('*',Edt_TjGllx.text)>0 then
G_String:=G_String+' and Da_Nytd.Xh like '''+MP_ReplaceStr(Edt_Tjgllx.text,'*','%',true,true)+''''
else G_String:=G_String+' and Da_Nytd.Xh='''+Trim(Edt_TjGllx.text)+'''';
end;
if Trim(Edt_TjGlm.text)<>'' then
begin
G_Bool:=true;
if pos('*',Edt_TjGlm.text)>0 then
G_String:=G_String+' and Da_Nytd.Sbmc like '''+MP_ReplaceStr(Edt_Tjglm.text,'*','%',true,true)+''''
else G_String:=G_String+' and Da_Nytd.Sbmc='''+Trim(Edt_TjGlm.text)+'''';
end;
if not G_Bool then
begin
Application.MessageBox(PChar('请输入'+Btn_Exe.Caption+'条件'),'提示',mb_ok+mb_iconWarning);
exit;
end
else DataSet.CommandText:=G_String;