各位老师好!
我现在要根据3个条件进行表中数据的查询,用Delphi.
就是说要在3个Edit里填写文字,然后把表里分别符合这3个
条件的字段的记录挑出来,用If () and () and () then...
但是我有时其中某一个Edit可能不填,就是希望不理这个条件,
那么如果不填,就什么也找不出来,如何不填就不理这个条件呢?
谢谢各位!
我现在要根据3个条件进行表中数据的查询,用Delphi.
就是说要在3个Edit里填写文字,然后把表里分别符合这3个
条件的字段的记录挑出来,用If () and () and () then...
但是我有时其中某一个Edit可能不填,就是希望不理这个条件,
那么如果不填,就什么也找不出来,如何不填就不理这个条件呢?
谢谢各位!
str: String;
begin
str := 'select * from table名 where 1=1';
if trim(edit1.text)<>'' t hen str := str +' and col1='''+trim(edit1.text)+'''';
if trim(edit2.text)<>'' t hen str := str +' and col2='''+trim(edit2.text)+'''';
....
with adoquery1 do
begin
close;
sql.text := str;
Open;
end;
end;
'select * from 表A where ColA like ''%'+ttrim(edit.text)+'%'' and ColB like ''%'+....'写一次就行了,不管你哪个没填! 一样执行!
這個是我的查詢代碼.你參考一下.
procedure Tqueryfrm.Button3Click(Sender: TObject);
function AddPercent(sSource:string):string;
begin
result := sSource;
if Pos('%',sSource)=0 then Result := sSource+'%';
end;
var sqlstr,swhere:string;
begin
sqlstr:='Select PQI_NUMBER,PQI_SUPPLIER,PQI_OSPOP,PQI_CREATER,PQI_CREATEDATE,PQI_CURRENCY,PQI_Status,PQI_TEXT,PQI_ID From tblospquota where PQI_NUMBER in(';
sqlstr:=sqlstr+'Select distinct PQI_NUMBER From tblospquota A,tblospquotadt B where A.PQI_ID=B.PQI_ID(+) ';
swhere:='';
if combobox1.Text <> '' then sWhere := sWhere + format(' AND A.PQI_NUMBER LIKE''%s'' ', [ AddPercent(combobox1.Text) ]);
if combobox2.Text <> '' then sWhere := sWhere + format(' AND A.PQI_SUPPLIER LIKE ''%s'' ', [ AddPercent(suppler) ]);
if combobox3.Text <> '' then sWhere := sWhere + format(' AND A.PQI_OSPOP LIKE ''%s'' ', [ AddPercent(combobox3.Text) ]);
if combobox4.Text <> '' then sWhere := sWhere + format(' AND B.QID_ITM_CODE LIKE ''%s'' ', [ AddPercent(combobox4.Text) ]);
if radiogroup1.ItemIndex<>-1 then sWhere := sWhere + format(' AND A.PQI_STATUS LIKE ''%s'' ', [ AddPercent(status) ]);
sqlstr:=sqlstr+swhere;
sqlstr:=sqlstr+')';
with quota.quotafrm.ADOQuery1 do
begin
close;
sql.Clear;
sql.Add(sqlstr);
open;
end;
close;
with quota.quotafrm do
begin
DbGrid1.Columns[0].Title.caption:='報價單號';
DbGrid1.Columns[1].Title.caption:='委外廠商';
DbGrid1.Columns[2].Title.caption:='委外製程';
DbGrid1.Columns[3].Title.caption:='建立者';
DbGrid1.Columns[4].Title.caption:='建立日期';
DbGrid1.Columns[5].Title.caption:='幣別';
DbGrid1.Columns[6].Title.caption:='狀態';
DbGrid1.Columns[7].Title.caption:='備註';
DbGrid1.Columns[8].Width:=0;
end;
end;
table还是query?