3

どのようにnullパラメーターを SQL 2008 レポートに渡しますか? ReportExecutionService.Render()ReportExecution および ReportService2005 Web サービスとやり取りするコードは、メソッドを呼び出してパラメーター (null 許容パラメーターを除く) を設定した後、メソッドの実行時に常にエラーを生成しますReportExecutionService.SetExecutionParameters()

"...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."

そのパラメーターは .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);
4

2 に答える 2

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()))
于 2011-02-02T17:45:45.180 に答える
0

少し異なる質問からのこの回答は役に立ちますか? そうでない場合は、おそらくより多くのコードが役立つでしょう。

HTH

于 2009-07-08T22:59:17.273 に答える