【问题标题】:SSRS: How to print a report without bringing up the rendered report?SSRS:如何在不显示渲染报告的情况下打印报告?
【发布时间】:2011-04-26 05:18:59
【问题描述】:

我想知道如何在不打开报告查看器的情况下打印 SSRS 报告。现在我的用户必须按下“打印”按钮,调出呈现的报告,然后再次按下“打印”。

当前代码:

Dim report as new ReportViewer
'snip - fill datasets, set data sources, blah blah blah
report.ReportViewer1.LocalReport.DataSources.Add(datasource)
report.Show()

这会打开一个查看器窗口,我并不真正想要,因为我的用户必须再次按打印。

所以我添加了以下内容:

report.PrintDialog()

上面的代码导致invalidOperationException,因为它还没有完成渲染。我明白这一点,但有没有办法以编程方式(而不是在屏幕上)呈现报告并将用户直接发送到打印机对话框?

编辑:好的,我已经完成了 90%。 PrintDialog() 不是要走的路。我找到了this article,但结果是InvalidXMLException。它没有告诉我为什么错了,只是错了……API完全没有帮助,所以……帮助?

【问题讨论】:

    标签: .net reporting-services


    【解决方案1】:

    您可以使用 SSRS Web 服务以编程方式呈现报告(即作为 PDF),然后从您的应用程序中打印。

    http://msdn.microsoft.com/en-us/library/ms152952.aspx

    【讨论】:

    • 我尝试调用render([args]),然后调用printDialog(),但仍然抛出相同的错误。你能提供一个代码示例吗?
    • 我过去曾使用此代码示例(用于 SQL 2005)以编程方式呈现为 PDF:codeproject.com/KB/reporting-services/… 使用此方法您应该在外部打印 PDF,而不是使用 printDialog() 方法.
    • 我已经很接近了,但这个 InvalidXMLException 是我唯一的障碍。
    【解决方案2】:

    以下是我在该主题上发现、关注并为我工作的内容: http://printssrsreport.blogspot.com/2011/09/print-ssrs-report-using.html

    请务必遵循“第 1 步”并添加对“ReportExecution2005.asmx”的引用。当我使用 Reporting Services 2008 R2 时,这让我感到困惑。但它就是这样,而且有效。

    其余的应该直截了当并为您工作。

    【讨论】:

    • 请注意,不鼓励仅链接的答案,因此答案应该是搜索解决方案的终点(相对于另一个参考中途停留,随着时间的推移往往会变得陈旧)。请考虑在此处添加独立的概要,并保留链接作为参考。
    【解决方案3】:

    为什么不把报告安排在一个时间表上,让它们以 pdf 格式保存到一个文件夹中,然后使用 Batch print pro 之类的东西来打印它们?

    【讨论】:

    • 这只是我在这个阶段遇到的 XML 错误,我很确定(著名的遗言)如果我克服了这个问题,我当前的代码就可以了 :)
    【解决方案4】:

    尝试将命令report.PrintDialog() 放在ReportViewer 控件的RenderingComplete 事件上。

    这将确保在您调用打印对话框之前报告已经呈现

    【讨论】:

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