【问题标题】:SSRS report parameterSSRS 报告参数
【发布时间】:2015-01-12 11:32:07
【问题描述】:

我在使用正确参数呈现报告时遇到问题。 我们有 RDL 报告,其日期参数的默认值是表达式“=today()”。

在项目中,我在 c# 中有以下代码

for(int i = 0; i < 15; i++)
{
    serverReport.SetParameters(new ReportParameter("dt1",date.ToString()));
    File.WriteAllBytes(path, serverReport.Render("PDF"));
}

对于第一次迭代,使用默认参数调用 sql 存储过程,并使用传递的日期调用后续迭代(我使用 sql profiler 检查了它)。

我想指出,在循环中,我有许多其他报告具有完全相同的默认日期参数,但问题在于这个。我已经比较了 2 个报告中的所有参数属性(一个可以正常工作,另一个不能正常工作),但它们是相同的。我找不到任何区别。

如果我删除默认值“=today()”,则报告工作正常。 也许同一个人有类似的问题,并向我推荐一些关于这个的东西。提前致谢。

【问题讨论】:

    标签: c# .net sql-server reporting-services


    【解决方案1】:

    需要检查的几件事:

    SetParameters 接受 IEnumerable&lt;ReportParameter&gt; 而不是单个 ReportParameter 对象。改为这样称呼它:

    serverReport.SetParameters(new ReportParameter[] { ReportParameter("dt1", date.ToString()) } );
    

    确保参数没有填写可用值以及默认值。如果传递的日期不是有效值之一(如果应用),它将不起作用。例如,如果可用值设置为=Today,则唯一能够正常运行的报告是第一个巧合使用该值的报告。

    您确定date.ToString() 正在通过适当且有效的日期吗?

    服务器的报表参数是否与开发环境匹配?参数设置不会自动更新,因此在服务器上所做的任何修改都不会被再次部署报告覆盖。检查服务器的报告参数并在必要时进行更新,或者干脆删除并重新部署报告。

    【讨论】:

    • 只是想为我自己的问题写解决方案。你超过了我。因此,我会将您的答案标记为解决方案。非常感谢你。这很奇怪,但是当我使用参数列表将参数全部设置为一个时,报告正在按预期工作。如果我单独设置参数,则会出现描述的问题。似乎是 SSRS 中的错误。
    【解决方案2】:

    尝试完全删除服务器中的不工作报告(并测试,也是工作报告之一)并将两者重新部署到服务器。您还可以在报告管理器中检查参数设置,因为差异可能是可见的。

    我之前在使用报表参数时遇到过此类问题,并且知道在您部署报表时参数设置不会一直被正确覆盖。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多