2011-07-21 34 views
1

我对SSRS很新,我几乎完成了要求我做的报告,一切都按预期工作,但我的客户只是要求我说明报告已打印多长时间目前的形式,在该报告的标题。SSRS打印计数器

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

比方说,我的客户打开了05-05-2005至06-06-2006期间的报告,并打印它会在标题/标题中显示“REPORT NAME(Print#1)”。然后,如果他决定一周后回来并打印相同的确切报告,则会显示“报告名称(打印#2)”。

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

在此先感谢您的任何线索/解决方案!

回答

2

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

思路:

  • 这方面的一个近似将查询记录到数据库中,当报表呈现。您不知道报表是否被acxtually打印虽然
  • 使用ReportViewer控件或其他编程方法一次启动和打印:所以数据库查询打印。并记录下来,如上所述。
+0

谢谢,在我的数据库中创建一个日志是我的下一步:D –

3

对于未来的读者:没有必要创建自己的查询日志记录。

您可以查询ReportServer.dbo.ExcecutionLog表。它包含大量关于报告请求的信息,包括XML格式的参数。您可以对此进行组/计数,以确定特定报告的先前执行次数。从这里执行日志中提取信息

更多信息: http://technet.microsoft.com/en-us/library/ms155836(v=sql.90).aspx

唯一的问题仍然是确定用户是否打印报表。您可能还能够从ExecutionLog得出这样的:

  • 格式列 - 这应该是“图像(EMF)”或类似的东西进行打印输出。
  • 此外,打印动作最有可能只是一个HTML后会呈现动作,用相同的流程id和/或来源=“会话”

看到自己什么记录打印输出产生:查询Executionlog由executionstart排序,显示报告,询问,打印,询问等。