2009-07-08 268 views
3

如何將null參數傳遞到SQL 2008報表中?SSRS 2008 NULL參數

"...This report requires a default or user-defined value for the report parameter...to run or subscribe to this report, you must provide a parameter value."

即使:隨ReportExecution & ReportService2005 Web服務接口的代碼一直在通過調用ReportExecutionService.SetExecutionParameters()方法執行ReportExecutionService.Render()方法,之後我設置的參數(不包括可空一個)會產生錯誤該參數在.rdl文件中定義爲null,並且默認爲null

我必須更改我的代碼嗎?更改.rdl文件中的參數選項?

var rs = new ReportExecutionService(); 
rs.Url= "http://Z/ReportServer/ReportExecution2005.asmx";  
rs.Credentials = CredentialCache.DefaultCredentials; 
rs.ExecutionHeaderValue = new ExecutionHeader(); 

var executionInfo = rs.LoadReport(ReportTarget, null); 
var parameterList = new List<ParameterValue>(); 

foreach (ParameterValue parameter in Parameters) 
{ 
    parameterList.Add(parameter); 
} 

foreach (var expectedParameter in executionInfo.Parameters) 
{ 
    if 
    ( 
     expectedParameter.Nullable && 
     !parameterList.Exists(delegate(ParameterValue pv) 
     { return pv.Name == expectedParameter.Name; }) 
) 
    { 
    var parameter = new ParameterValue(); 
    parameter.Name = expectedParameter.Name; 
    parameter.Value = null; 

    parameterList.Add(parameter); 
    } 
} 

rs.SetExecutionParameters(parameterList.ToArray(), "en-us"); 

Warning[] warnings = null; 
string[] streamIDs = null; 
string encoding = null; 
string extension = null; 
string mime = null; 

var content = rs.Render("PDF", null, out extension, out mime, out encoding, out warnings, out streamIDs); 
+0

嘗試啓用了允許在參數 – u07ch 2009-07-08 17:27:28

+0

我試過了空白選項,它並不能幫助。 – JonathanWolfson 2009-07-08 23:20:45

回答

1

看起來像SSRS中的錯誤。特別是因爲我有一些報告的默認空值的作品,有的給出這個錯誤消息「...報告需要報告參數的默認或用戶定義的值...」

無論如何,這段代碼似乎在VB中爲我工作。

params = New ArrayList 

...

Dim ssrsPrm As New Microsoft.Reporting.WebForms.ReportParameter(param.Name) 
ssrsPrm.Values.Add(Nothing) 
params.Add(ssrsPrm) 

...

Me.ReportViewer1.ServerReport.SetParameters(DirectCast(params.ToArray(GetType(Microsoft.Reporting.WebForms.ReportParameter)), Microsoft.Reporting.WebForms.ReportParameter()))