2

SQL 2008 R2 で Reporting Services を実行しており、いくつかのレポートを作成しています。Report Server にアクセスしてサブスクリプションをセットアップし、任意のレポートを電子メール アドレスに送信できます。したがって、すべてが正しく構成されています。

私がやりたいことは、使用可能なレポートのリストを表示する Web ページをアプリケーションに含めることです。ユーザーはいずれかを選択し、スケジュールの頻度を選択し、電子メール アドレスを入力して、[保存] ボタンをクリックします。[保存] をクリックすると、SSRS にサブスクリプションが作成されます。レポートによっては、いくつかのレポート パラメータを渡す必要がある場合があります。

C#でこれを行うにはどうすればよいですか?

4

2 に答える 2

5

レポートの SSRS で 1 回限りのサブスクリプションを動的に生成できます。Diego が述べたように、RS Web サービスを使用する必要があります。

コードは次のようになります。

static void generateSubscription()
{
    if (SubscriptionRequests.Count < 1) return;

    NetworkCredential credentials = new NetworkCredential("user", "pass");
    reports.ReportingService2005 rs = new reports.ReportingService2005();
    rs.Credentials = credentials;
    DateTime topDatetime = DateTime.Now;
    topDatetime = topDatetime.AddMinutes(2);

    foreach (SubscriptionRequest x in SubscriptionRequests)
    {
        reports.ExtensionSettings extensionSettings = new reports.ExtensionSettings();
        List<reports.ParameterValue> extParameters = new List<reports.ParameterValue>();
        List<reports.ParameterValue> parameters = new List<reports.ParameterValue>();
        string description = "Email: ";
        string eventType = "TimedSubscription";
        extensionSettings.Extension = "Report Server Email";

        string scheduleXml = "<ScheduleDefinition><StartDateTime>";
        scheduleXml += topDatetime.ToShortDateString() + " " + topDatetime.ToShortTimeString();
        scheduleXml += "</StartDateTime></ScheduleDefinition>";

        parameters.Add(new reports.ParameterValue() { Name = "abc", Value = x.id });


        extParameters.Add(new reports.ParameterValue() { Name = "RenderFormat", Value = x.renderFormat });
        extParameters.Add(new reports.ParameterValue() { Name = "TO", Value = x.email });
        extParameters.Add(new reports.ParameterValue() { Name = "ReplyTo", Value = x.replyTo });
        extParameters.Add(new reports.ParameterValue() { Name = "IncludeReport", Value = "True" });
        extParameters.Add(new reports.ParameterValue() { Name = "Subject", Value = "subject - " + " (" + x.id.ToString() + ")" });

        extParameters.Add(new reports.ParameterValue() { Name = "Comment", Value = x.body });
        extensionSettings.ParameterValues = extParameters.ToArray();

        description += topDatetime.ToShortDateString() + " " + topDatetime.ToShortTimeString();
        description += " (" + x.a + " - " + x.b + " - " + x.c + ")";
        string _reportName = "/report";
        rs.CreateSubscription(_reportName, extensionSettings, description, eventType, scheduleXml, parameters.ToArray());
        topDatetime = topDatetime.AddSeconds(30);
    }           
}  
于 2012-04-26T18:49:21.323 に答える
1

最も簡単な方法は、事前に定義された「ブラウザ」ロールの下で、レポート マネージャーへのアクセス権をユーザーに付与することです。これがまさにこの役割であり、フォルダーとレポートを表示し、レポートを購読します。

それが不可能な場合は、独自の管理ツールを作成できます。そのためには、SOAP とReportService2005エンドポイントを使用して SSRS Web メソッドにアクセスする必要があります 。

はこちら

于 2012-04-26T14:54:10.773 に答える