2009-07-08 14 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サービスとインターフェースコードは常にIパラメータを設定した後ReportExecutionService.SetExecutionParameters()メソッドを呼び出すを介して(NULL可能で一つを含むない)、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

+0

上の許可空白のオプションを有効にしてください。 – JonathanWolfson

答えて

0

この回答はfrom a slightly differentですか?もしそうでなければ、より多くのコードが役に立つでしょう。

HTH

1

SSRSのバグのようです。特に、既定のnull値が機能するいくつかのレポートと、このエラーメッセージ "...レポートにはレポートパラメータの既定値またはユーザー定義値が必要です..."

とにかく、このコードは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())) 
+0

古いスレッド、私は知っているが、これは私がVBからNULLを渡すためにしたものです。私はDirectCastラインを使用しませんでしたが、List(Of ReportParameter)にパラメータを追加し、SetParametersを使用してリストを渡しました。 –

関連する問題