2012-04-26 9 views
2

SQL 2008 R2でReporting Servicesを実行しており、作成したレポートがいくつかあります。私はReport Serverに入り、サブスクリプションを設定し、レポートのいずれかを電子メールアドレスに電子メールで送ることができます。そのすべてが正しく設定されています。WebページからSSRSサブスクリプションを作成

私がしたいことは、利用可能なレポートのリストを表示するアプリケーション内のWebページを持っていることです。ユーザーは1つを選択し、スケジュールの頻度を選択し、電子メールアドレスを入力して、「保存」ボタンをクリックすることができます。保存をクリックすると、SSRSでサブスクリプションを作成する必要があります。レポートに応じていくつかのレポートパラメータを渡す必要があるかもしれません。

どのようにC#でこれを行うことができますか?

答えて

5

するには、動的レポートのSSRSで1時間のサブスクリプションを生成することができます。あなたは、ディエゴの言葉通りにRSウェブサービスを使わなければならないでしょう。

あなたのコードは次のようになります:SSRSのこのインスタンスがユーザーではないだろうと多くのデータベースとレポートがオフにキーが付いていカスタマーID GUIDのレポートを提供していますので、最初のオプションが機能しません

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); 
    }   
} 
1

最も簡単な方法は、事前定義された「ブラウザ」ロールの下でレポートマネージャにアクセスすることです。これはまさにこの役割に関するもので、フォルダとレポートを表示してレポートに登録します。

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

here

+0

を知っている。プロジェクトのエンドポイントへの参照を追加し、Webメソッドの大きなリストを参照します。誰かが例を持っているなら私は見ることができ、これを処理する方法を見ることができます。 – Blaze

+0

はい、私の編集を参照してください – Diego

関連する問題