先读combobox中的事件啊,自己动态匹配。 for i:=0 to combobox.recount -1 do begin if **** then 如果是那个break; end;
每个COMboBox 都代表什么信息
既然项不多,那么就写几个IF... ELSE IF...不就完了吗?
以下是我處理多個查詢時的代碼,樓主參考一下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; end;
else if then
但是根據樓主的需求,覺得不合理,假如第一個有100個項次,第二個有1000個項次的話,那這兩個的組合有100*1000=100000種可能性.
難道真的要寫100000次 if語句嗎? 期待高人有好的辦法.
不知道button按鈕下是做什麽事件的?
┕a:XXXXX
┕b:XXXXX
2:XXXXX
┕c:XXXXX
┕d:XXXXX
好比物件分类跟物件
1:XXXXX //1级分类
┕d:XXXXX //2级分类截取第一位判断是否为:┕
再去相应的数据库里查,OK?
for i:=0 to combobox.recount -1 do
begin
if **** then
如果是那个break;
end;
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;
end;