2011-05-15 28 views
5

Estimados expertos, estoy tratando de filtrar el resultado de DBGrid conectado a adoquery, dependiendo de la selección del usuario de 4 casillas de verificación, el usuario puede seleccionar uno o más campos campos para filtrar los datos en consecuencia tengo este código, y no sé cómo pasar "y/o no pasarlo" si el usuario selecciona dos o más casillas de verificación.Delphi- pasar parámetros a 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 su ayuda

Respuesta

5

puede volver a escribir su sentencia SQL para (marque la final 1 = 1)

select * from Vw_Activity where 1=1 

y luego añadir cada condición como esta

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

de agradecimiento tanto, eres un salvavidas – Amanda

Cuestiones relacionadas