2011-05-15 10 views
5

प्रिय पैरामीटर, मैं 4 चेकबॉक्स के उपयोगकर्ता चयन के आधार पर परिणाम को डीबीग्रीड से जोड़ने के लिए प्रयास कर रहा हूं, उपयोगकर्ता डेटा को फ़िल्टर करने के लिए एक या अधिक फिल्में चुन सकता है मेरे पास है यह कोड, और मुझे नहीं पता कि उपयोगकर्ता "या/या पास नहीं" कैसे पास करता है यदि उपयोगकर्ता दो या दो से अधिक चेकबॉक्स का चयन करता है।डेल्फी- ADOquery

Vw_Activity.SQL.Text:='select * from Vw_Activity where '; 
if CBEmployee.Checked then 
begin 
Vw_Activity.SQL.Add('Emp_Name_Ar=:x'); 
Vw_Activity.Parameters.ParamByName('x').Value:=emp Name.Text; 
end; 


if CBTask.Checked then 
begin 
Vw_Activity.SQL.Add('Category_Name=:y'); 
Vw_Activity.Parameters.ParamByName('y').Value:=Pro blemCat.Text; 
end; 

if CBIncharge.Checked then 
begin 
Vw_Activity.SQL.Add('Support_name_En=:h'); 
Vw_Activity.Parameters.ParamByName('h').Value:=Sup portstaff.Text; 
end; 


if CBstatus.Checked then 
begin 
Vw_Activity.SQL.Add('Request_Status=:k'); 
Vw_Activity.Parameters.ParamByName('k').Value:=Req uestStatus.Text; 
end; 

Vw_Activity.Active:=true; 

आपकी मदद waitting

उत्तर

5

आप

select * from Vw_Activity where 1=1 

(अंतिम 1 = 1 की जाँच करें) और फिर इस

Vw_Activity.SQL.Text:='select * from Vw_Activity where 1=1 '; 
if CBEmployee.Checked then 
begin 
    Vw_Activity.SQL.Add('AND Emp_Name_Ar=:x'); 
    Vw_Activity.Parameters.ParamByName('x').Value:=emp Name.Text; 
end; 


if CBTask.Checked then 
begin 
    Vw_Activity.SQL.Add('AND Category_Name=:y'); 
    Vw_Activity.Parameters.ParamByName('y').Value:=Pro blemCat.Text; 
end; 

if CBIncharge.Checked then 
begin 
    Vw_Activity.SQL.Add('AND Support_name_En=:h'); 
    Vw_Activity.Parameters.ParamByName('h').Value:=Sup portstaff.Text; 
end; 


if CBstatus.Checked then 
begin 
    Vw_Activity.SQL.Add('AND Request_Status=:k'); 
    Vw_Activity.Parameters.ParamByName('k').Value:=Req uestStatus.Text; 
end; 

Vw_Activity.Active:=true; 
+1

धन्यवाद की तरह प्रत्येक शर्त जोड़ने के लिए अपने एसक्यूएल वाक्य को फिर से लिखने कर सकते हैं आप बहुत, आप एक जीवन बचतकर्ता हैं – Amanda