在没有用户干预的情况下触发ASP.Net的SSRS报告

时间:2014-04-14 15:55:30

标签: c# asp.net vb.net reporting-services

我希望能够从ASP.Net应用程序启动SSRS报告,而无需在应用程序中将其拉出并且必须从那里将其打印到指定的打印机。这似乎是一个非常需要的功能,但我无法在线找到任何好的解决方案。任何人都可以帮我这个吗?

2 个答案:

答案 0 :(得分:2)

首先,您需要设置报告以从执行快照进行渲染。您应该在reports属性选项卡下找到它,执行,选择“从报告执行快照渲染此报告”单选按钮。

接下来,您需要设置要将其发送给的订阅。在订阅选项卡下,添加新订阅,输入电子邮件信息等。在“订阅处理选项”下,选择“刷新报告内容时”。

现在您需要能够以编程方式触发新快照。幸运的是,报告服务为此目的公开了一个Web服务。添加服务引用:

http:// your_report_server:your_port / ReportServer / ReportService.asmx

添加引用后,您只需调用UpdateReportExecutionSnapshot方法即可使报告执行并邮寄给您的订阅者。

这个简单的c#命令行应用程序可能如下所示:

static void Main(string[] args)
    {

        // The first argument should be the full report path
        // and name. It is passed directly to the Ssrs web service

        if (args.Length == 0)
        {
            throw new ArgumentException("Full report name must be the first parameter");
        }


        // create the endpoint

        ReportingServiceSoapClient ssrs = new ReportingServiceSoapClient();

        // Update the snapshot

        ssrs.UpdateReportExecutionSnapshot(null,args[0]);
     }

对于报告名称,您需要指定完整的报告名称,包括您拥有的所有子文件夹。因此,如果您的报告是按部门组织的,则必须指定所有父文件夹,例如:

/ DivisionName / DailyReports / SalesReport

答案 1 :(得分:0)

从Web应用程序的角度来看,在现代的prowsers中,我不相信你可以指定一台打印机,你当然不能自动启动"打印。报告服务曾经能够使用MS浏览器插件无人值守打印,但多年前就被删除了,因为它现在被视为安全风险。

你能做的最好的事情是"一键式" print,使用ReportService.asmx Web服务中的Report Execution服务以编程方式呈现报表,并启动程序化解决方案以打印呈现的报表。

不幸的是,自动打印SSRS报告非常复杂。你可以在这里阅读How to Print Reports Programmatically