【问题标题】:SSRS Print CounterSSRS 打印计数器
【发布时间】:2011-07-21 12:49:36
【问题描述】:

我对 SSRS 很陌生,我几乎完成了我被要求做的报告,一切都按预期工作,但我的客户只是要求我指出报告以当前形式打印了多长时间,在上述报告的标题中。

所以我的报告有 2 个参数:开始日期和结束日期。

假设我的客户提出了一份 05-05-2005 至 06-06-2006 期间的报告,并打印它会在标题/标题中显示“报告名称(打印 #1)”。然后,如果他决定一周后回来打印相同的确切报告,它将显示“报告名称(打印 #2)”。

有没有办法做到这一点?到目前为止,我的研究让我相信这是不可能的。

提前感谢任何线索/解决方案!

【问题讨论】:

    标签: report reporting-services


    【解决方案1】:

    您必须写一个custom Print delivery extension 才能在某个数据库中记录“打印”。所以实际上,不,在“纯”SSRS中

    想法:

    • 一种近似的做法是在呈现报告时将查询记录到数据库中。你不知道报告是否真的打印出来了
    • 使用 ReportViewer 控件或其他一些编程方法一次性启动和打印:因此数据库查询打印。并记录下来,如上所述。

    【讨论】:

    • 谢谢,在我的数据库中创建日志是我的下一步:D
    【解决方案2】:

    对于未来的读者:无需创建自己的查询日志记录。

    您可以查询 ReportServer.dbo.ExecutionLog 表。它包含很多关于报告请求的信息,包括 XML 格式的参数。您可以对其进行分组/计数,以确定特定报告的先前执行次数。

    更多关于从执行日志中提取信息的信息: http://technet.microsoft.com/en-us/library/ms155836(v=sql.90).aspx

    唯一的问题仍然是确定用户是否打印了报告。您也可以从 ExecutionLog 中得出:

    • “格式”列 - 这应该是“图像 (emf)”或用于打印输出的类似内容。
    • 此外,打印操作很可能发生在 HTML 渲染操作之后,具有相同的 ExecutionID 和/或 Source = "Session"

    亲自查看 Printout 生成的日志:查询 Executionlog 按 executionstart 排序、显示报告、重新查询、打印、重新查询等。

    【讨论】:

      猜你喜欢
      • 2014-09-21
      • 2018-05-04
      • 2023-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多