2009-07-08 68 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()))