2012-03-14 23 views
1

我有一個我在VB2005中構建的報告。它可以在報表生成器中完美工作,並且可以在服務器上的報表管理器中工作。SSRS2005報告在構建器和管理器中工作,但不在查看器中

但是,我有一個aspx頁面,並帶有一個報告查看器,它返回0個結果。

報表呈現,但不返回任何數據。

這是我的SQL代碼:

SELECT  v_rpt_Company.Company_Name, SO_Activity.Subject, SO_Activity.Notes, SO_Activity.Date_Closed, SO_Activity.Last_Update, v_rpt_Member.Member_ID, 
         v_rpt_ActivityType.SO_Activity_Type_Desc, v_rpt_ActivityStatus.SO_Act_Status_Desc 
FROM   v_rpt_Company LEFT OUTER JOIN 
         SO_Activity ON v_rpt_Company.Company_RecID = SO_Activity.Company_RecID LEFT OUTER JOIN 
         v_rpt_Member ON SO_Activity.Assign_To = v_rpt_Member.Member_ID LEFT OUTER JOIN 
         Company_Team ON v_rpt_Member.Member_RecID = Company_Team.Member_RecID AND 
         v_rpt_Company.Company_RecID = Company_Team.Company_RecID LEFT OUTER JOIN 
         v_rpt_ActivityType ON SO_Activity.SO_Activity_Type_RecID = v_rpt_ActivityType.SO_Activity_Type_RecID LEFT OUTER JOIN 
         v_rpt_ActivityStatus ON SO_Activity.so_act_status_recid = v_rpt_ActivityStatus.SO_Act_Status_RecID 
WHERE  (@acctmgr <> 'true' OR Company_Team.AcctMgr_Flag = 1) AND 
         (SO_Activity.Assign_To = @member) AND (v_rpt_ActivityStatus.SO_Act_Status_Desc = CASE WHEN @act_status IS NULL 
         THEN v_rpt_ActivityStatus.so_act_status_desc ELSE @act_status END) AND ((@company = '') OR (v_rpt_Company.Company_RecID = @company)) AND (SO_Activity.Last_Update >= CONVERT(datetime, @date_start, 101)) AND (SO_Activity.Last_Update <= CONVERT(datetime, @date_end, 101)) 
GROUP BY v_rpt_Company.Company_Name, SO_Activity.Subject, SO_Activity.Notes, SO_Activity.Date_Closed, SO_Activity.Last_Update, v_rpt_Member.Member_ID, 
         v_rpt_ActivityType.SO_Activity_Type_Desc, v_rpt_ActivityStatus.SO_Act_Status_Desc 
ORDER BY v_rpt_Company.Company_Name, SO_Activity.Last_Update DESC 

這裏是我的asp.net代碼:

<div style="text-align:center;border-style:solid;border-width:3px; width:auto;height:auto;"> 
    <rsweb:ReportViewer ID="ReportViewer1" runat="server" Font-Names="Verdana" Font-Size="8pt" 
     Height="700px" ProcessingMode="Remote" Width="100%" ShowParameterPrompts="False"> 
     <ServerReport ReportPath="/path/report" ReportServerUrl="http:myserver/reportserver" /> 
    </rsweb:ReportViewer> 
</div> 

這裏是我的C#:

/* 
    * Retrieve parameters from URL and send them to the report 
    */ 
    private void getParametersFromURL() 
    { 
     //Load Parameters from URL 
     //Requests that are commented, are commented because of lack of ConnectWise Support 
     String[] parameters = new String[7]; 
     parameters[0] = Request.QueryString["acctmgr"]; 
     parameters[1] = Request.QueryString["member"]; 
     parameters[2] = Request.QueryString["details"]; 
     parameters[3] = Request.QueryString["act_status"]; 
     parameters[4] = Request.QueryString["company"]; 
     parameters[5] = Request.QueryString["date_start"]; 
     parameters[6] = Request.QueryString["date_end"]; 

     //Create Parameter Collection Array 
     Microsoft.Reporting.WebForms.ReportParameter[] reportParameterCollection = new Microsoft.Reporting.WebForms.ReportParameter[parameters.Length]; 
     //Loop through each parameter and load the name and value into the parameter collection 
     int i = 0; 
     foreach (String parameter in parameters) 
     { 
      reportParameterCollection[i] = new Microsoft.Reporting.WebForms.ReportParameter(); 
      reportParameterCollection[i].Name = getParameterName(i); 
      reportParameterCollection[i].Values.Add(Convert.ToString(parameters[i])); 
      i++; 
     } 

     //Load Parameters into the ReportViewer 
     ReportViewer1.ServerReport.SetParameters(reportParameterCollection); 
     ReportViewer1.ServerReport.Refresh(); 
    } 

    /* 
    * Takes the index of the element in the parameter array 
    * then returns the correct parameter name to return to the report viewer 
    */ 
    public String getParameterName(int number) 
    { 
     switch (number) 
     { 
      case 0: 
       return "AcctMgr"; 
      case 1: 
       return "member"; 
      case 2: 
       return "details"; 
      case 3: 
       return "act_status"; 
      case 4: 
       return "company"; 
      case 5: 
       return "date_start"; 
      case 6: 
       return "date_end"; 
      default: 
       Response.Write("<script language='javascript'>alert('Error: getParameterName(number) failed. Parameter #: " + number + ");</script>"); 
       return "error"; 
     } 
    } 
+0

「reportParameterCollection」中是否有任何缺失的參數?您是否嘗試通過設置ReportViewer ShowParameterPrompts =「True」來手動輸入它們? – 2012-03-14 17:00:51

+0

不,沒有遺漏。我沒有得到任何錯誤,它呈現沒有結果。 它可以完美的使用參數提示。 – 2012-03-14 17:07:07

+0

這是我的URL的一個例子: HTTP://myurl/reports/myapp.aspx公司= 2&細節= d&成員=成員名稱與acctmgr =假act_status = DATE_START = 01%2f01%2f2012&DATE_END = 03%2f14%2f2012 – 2012-03-14 17:08:38

回答

1

我固定它。問題是act_status

根據reportviewer,顯然一個URL字符串&act_status=&...並不意味着act_status = NULL

所以我改變了我的SQL來反映空字符串而不是NULL。