我在使用正确的参数呈现报表时遇到问题。 我们有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个repors中的所有参数属性(一个工作,另一个工作不正常),但它们是相同的。我找不到任何区别。
如果我删除默认值“= today()”,那么报告工作正常。 也许同一个人有类似的问题,并向我推荐一些相关的东西。提前谢谢。
答案 0 :(得分:1)
要检查的一些事项:
SetParameters
需要IEnumerable<ReportParameter>
个ReportParameter
个对象。这样称呼它:
serverReport.SetParameters(new ReportParameter[] { ReportParameter("dt1", date.ToString()) } );
确保参数没有填写可用值以及默认值。如果传递的日期不是有效值之一(如果应用),它将无法工作。例如,如果可用值设置为=Today
,则唯一能够正常运行的报表是第一个巧合使用该值的报表。
您确定date.ToString()
正在通过适当且有效的日期吗?
服务器的报告参数是否与开发环境匹配?参数设置不会自动更新,因此不会通过再次部署报告来覆盖服务器上所做的任何修改。检查服务器的报告参数并在必要时进行更新,或者只是删除并重新部署报告。
答案 1 :(得分:0)
尝试完全删除服务器中的不工作报告(并进行测试,同时进行其中一项工作)并重新部署到服务器。您还可以在报告管理器中查看参数设置,因为可能会出现差异。
我之前遇到过报告参数的问题,并且知道在部署报告时不会正确覆盖参数设置。