触发SSRS数据驱动订阅 - 提供参数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了触发SSRS数据驱动订阅 - 提供参数相关的知识,希望对你有一定的参考价值。

我有一个接受日期参数的SSRS(2016)报告。用户选择日期并运行报告并为每个客户返回一页。该报告还有一个数据驱动的订阅,当触发时,通过电子邮件发送与客户相关的输出。

我目前的方法是有一个只有一些用户可以看到的文本框,然后单击文本框会触发订阅。我是这样做的:

当用户单击“查看报告”按钮时,将用户选择的参数插入表中,然后使用以下内容触发订阅:

EXEC msdb.dbo.sp_start_job @job_name ='job name to be sent out'

然后,订阅/报告的数据集使用插入表中的参数来完成它。一切正常。

当多个人运行报告时出现问题。第二人触发器可能会过度写入第一个人参数插入,导致发送错误的数据集。

我的问题是..是否有更好的方法来触发数据驱动的订阅,其中报告需要参数值 - 但参数值不能预先确定?

如果我的方法可以接受,我怎样才能消除参数值的覆盖?

更好的是,我如何确定正确的参数并将其传递给订阅?例如会话ID /用户ID ..等,

欢迎任何想法或替代实施..

答案

我之前遇到过同样的问题,在从另一个用户处理过程中会覆盖默认表值。我解决它的方法是在HOST_ID或HOST_NAME的默认表中添加一列。这有点痛苦,因为你已经将该参数传递给报告。

 SELECT HOST_ID(), HOST_NAME()

要么

在报表参数中,您可以使用以下表达式默认值来获取当前用户。

 =Right(User!UserID, Len(User!UserID)-instr(User!UserID, ""))
  • 注意:如果将此设置为报表变量,则数据驱动的订阅将失败。作为参数,它将起作用。

以上是关于触发SSRS数据驱动订阅 - 提供参数的主要内容,如果未能解决你的问题,请参考以下文章

SSRS 2008 R2-格式参数为DD / MM / YYYY

Excel VBA代码将SSRS数据作为数据集提取

使用查询作为输入参数创建动态SSRS报告

将Guid传递给SSRS 2008 Url Access参数

SSRS查询获取标量变量错误,而不是在Visual Studio中使用参数

更新到SSRS 2016后的应用程序错误(对象不支持属性或方法)