2015-02-06 73 views
0

我有一個SSRS 2005報告與兩個參數。 CountID參數是一個查詢值(From query)。我使用以下方法從ASP.Net 2.0調用此報告,它工作正常。參數缺失值SSRS

window.location.href= strRepServer + strReport + "&rc:Parameters=false&rs:ClearSession=true&plantcd=" + strPlantCD + "&CountID=" + strCountID; 

請注意,我們僅傳遞參數CountID的ASPX頁面中的一個字符串值。它仍然可以正常工作。

現在,我修改了代碼,使用reportviewercontrol使用下面的代碼。但是,當報告呈現時,它會顯示「CountID'參數缺少值」。我提到了以下兩篇文章 - 但它沒有幫助。任何想法如何使其工作?

  1. Pass Multi value parameter to SSRS from UI
  2. Passing a Multi-value parameter to the ReportViewer control

注:我明白,如果我做CountID爲non-queried或使得它作爲文本框將解決此問題。但我需要使代碼工作而不更改rdl文件。 [原因是該RDL正常工作與以前的方法(調用報告沒有的ReportViewer)

CODE

rvInvalidPackageSKUs.ProcessingMode = Microsoft.Reporting.WebForms.ProcessingMode.Remote 

    rvInvalidPackageSKUs.ServerReport.ReportServerUrl = New Uri("http://myserver/ReportServer/") 
    rvInvalidPackageSKUs.ServerReport.ReportPath = "/MyFolder/SubFolder/MyReport" 

    Dim rpPlant As New ReportParameter 
    rpPlant.Name = "plantcd" 
    rpPlant.Values.Add("23") 

    'Dim rpCountID As New ReportParameter 
    'rpCountID.Name = "CountID" 
    'rpCountID.Values.Add("1") 

    Dim rpCountID As ReportParameter 
    rpCountID = New ReportParameter("CountID") 
    Dim valuesArray As String() = New String() {"x", "y", "z"} 
    rpCountID.Values.AddRange(valuesArray) 

    Dim paramList As New Generic.List(Of ReportParameter) 
    paramList.Add(rpPlant) 
    paramList.Add(rpCountID) 

    rvInvalidPackageSKUs.ServerReport.SetParameters(paramList) 
    rvInvalidPackageSKUs.ServerReport.Refresh() 

參數在RDL

enter image description here

回答

0

通過設置「可用值「到」來自查詢「,您實際上限制了SSRS將接受的值。我相信如果你傳遞一個不在列表中的值,它會忽略它,然後你會得到「缺失值」的錯誤。

您確定您傳遞的值是否存在「Counts」數據集?

+0

請問爲什麼當我使用url方法(不使用reportviewer)時它工作正常? – Lijo 2015-02-09 14:54:25

+0

您能否告訴我您評論的區塊是否有效? (將單個值設置爲「rpCountID」參數而不是多個)。此外,請嘗試對每個值使用「rpCountID.Values.Add」,而不是一次使用「rpCountID.Values.AddRange」。它工作嗎? 順便說一句,我仍然會確保** all **您應用於參數的值確實存在於數據集中。從我的經驗來看,單一的價值混淆了整個事物是很常見的。 – 2015-02-09 16:20:42

+0

既然你提到過,當使用url方法時,你只傳遞一個單一的值,我的猜測是這個參數不接受這個值,因爲你分配它們的方法,或者是因爲有一個單獨的值是無效的。 – 2015-02-09 16:42:09

0

ReportParameter rptParameter = default(ReportParameter); rptParameter = new ReportParameter(「放置參數名稱」,「這裏放置從數據庫獲取的列名/值」);

rptViewer1.LocalReport.SetParameters(rptParameter);