2014-07-24 60 views
1

我想通過組合框過濾水晶報告中的多個參數,但問題是一次過濾器處於活動狀態。在多個參數上過濾

下面是這兩個組合框指數變化的代碼:

protected void drpUserName_SelectedIndexChanged(object sender, EventArgs e) 
     { 
      username = drpUserName.SelectedValue; 

      ReportDocument rd = new ReportDocument(); 
      rd.Load(Server.MapPath("LeaveReport.rpt")); 

      rd.SetParameterValue("username", username); 
      rd.SetParameterValue("status", status); 

      rd.SetDatabaseLogon("cde_portal", "credyna", "SERVER\\SQLEXPRESS", "lbs"); 

     CrystalReportViewer1.ReportSource = rd; 

    } 

    protected void drpStatus_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     status = drpStatus.SelectedValue; 

     ReportDocument rd = new ReportDocument(); 
     rd.Load(Server.MapPath("LeaveReport.rpt")); 
     rd.SetParameterValue("status", status); 
     rd.SetParameterValue("username", username); 

     rd.SetDatabaseLogon("cde_portal", "credyna", "SERVER\\SQLEXPRESS", "lbs"); 

     CrystalReportViewer1.ReportSource = rd; 

    } 

這裏是記錄選擇公式:

If {?username} = "-1" Then      // -1 for all values 
{tblEmployee.Employeer_UserName} <> {?username} // return all records 
Else 
{tblEmployee.Employeer_UserName} = {?username} // return selected records 
and IF {?status} = "-1" Then 
{tblLeave.leave_status} <> {?status} 
Else 
{tblLeave.leave_status} = {?status} 

在上述公式一兩件事:如果我檢查{?username}第一和然後在這種情況下檢查{?status}{?username}過濾正在工作,但如果我先檢查{?status}然後{?status},過濾工作正常。

回答

1

您可以通過這種方式做到這一點...

protected void drpUserName_SelectedIndexChanged(object sender, EventArgs e) 
     { 

      string strSelection = "1=1"; 
      rd.SetParameterValue("username", drpUserName.SelectedValue); 
      rd.SetParameterValue("status", drpStatus.SelectedValue); 

      if (drpUserName.SelectedValue != "-1") 
      { 
       strSelection = strSelection + "And {tblEmployee.Employeer_UserName}=" + "\""+ drpUserName.SelectedValue+"\""; 
      } 
      if (drpStatus.SelectedValue != "-1") 
      { 
       strSelection = strSelection + "And {tblLeave.leave_status}=" +"\""+ drpStatus.SelectedValue+"\"" ; 
      } 
      rd.RecordSelectionFormula = strSelection; 
      rd.SetDatabaseLogon("cde_portal", "credyna", "SERVER\\SQLEXPRESS", "lbs"); 
      CrystalReportViewer1.ReportSource = rd; 

     } 

     protected void drpStatus_SelectedIndexChanged(object sender, EventArgs e) 
     { 
      string strSelection = "1=1"; 
      rd.SetParameterValue("username", drpUserName.SelectedValue); 
      rd.SetParameterValue("status", drpStatus.SelectedValue); 

      if (drpUserName.SelectedValue != "-1") 
      { 
       strSelection = strSelection + "And {tblEmployee.Employeer_UserName}=" + "\"" + drpUserName.SelectedValue + "\""; 
      } 
      if (drpStatus.SelectedValue != "-1") 
      { 
       strSelection = strSelection + "And {tblLeave.leave_status}=" + "\"" + drpStatus.SelectedValue + "\""; 
      } 
      rd.RecordSelectionFormula = strSelection; 
      rd.SetDatabaseLogon("cde_portal", "credyna", "SERVER\\SQLEXPRESS", "lbs"); 
      CrystalReportViewer1.ReportSource = rd; 

     } 
+0

感謝ü老兄的工作! –