2011-07-30 14 views
3

SQL 2008 Reporting Servicesを使用しています。アプリケーションからパラメータを設定した後、ブラウザでレポートを開きます。私はPDFから添付ファイルと共に電子メールを送信するコードからの報告のサブスクリプションを作成します。複数の添付ファイルを含む電子メールをSQL Reporting Servicesを通じてPDFで送信

しかし、コードから複数のレポートのサブスクリプションを作成し、1つの電子メールを複数のPDF添付ファイルとともにクライアントに送信する必要があります。 (注:各サブスクリプションに対して電子メールを送信する必要はありません) 私は自分自身を試しましたが、解決策は見つかりませんでした。 1つのメールで複数のPDF添付ファイルレポートデータを電子メールで送信するにはどうすればいいのか教えてください。

または、複数のレポートをPDF形式で1つの電子メールで送信するこの目標を達成する他の方法はありますか?

以下は、私がcreate subscriptionに使用しているコードです。添付ファイルとともにメールを送信します。しかし、私は上記のように、私は1つの電子メールに複数の添付ファイルが必要です。

RSServiceReference05.ReportingService2005SoapClient rs = new RSServiceReference05.ReportingService2005SoapClient(); 

rs.ClientCredentials.Windows.AllowedImpersonationLevel = new System.Security.Principal.TokenImpersonationLevel();    

string batchID = string.Empty; 
RSServiceReference05.ServerInfoHeader infoHeader = rs.CreateBatch(out batchID); 

RSServiceReference05.BatchHeader bh = new RSServiceReference05.BatchHeader() 
      { 
       BatchID = batchID, 
       AnyAttr = infoHeader.AnyAttr 
      };      

string desc = "Report is attached."; 
string eventType = "TimedSubscription"; 
DateTime dt = DateTime.Now; 
string scheduleXml = "<ScheduleDefinition xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"><StartDateTime xmlns=\"http://schemas.microsoft.com/sqlserver/2006/03/15/reporting/reportingservices\">" + dt.AddMinutes(3).ToString("dd/MMM/yyyy HH:mm:ss")+"+05:00</StartDateTime></ScheduleDefinition>"; 


RSServiceReference05.ParameterValue[] extensionParams = new RSServiceReference05.ParameterValue[7]; 
extensionParams[0] = new RSServiceReference05.ParameterValue(); 
extensionParams[0].Name = "TO";    
extensionParams[0].Value = txtEmailTo.Text; 
extensionParams[1] = new RSServiceReference05.ParameterValue(); 
extensionParams[1].Name = "IncludeReport"; 
extensionParams[1].Value = "True"; 
extensionParams[2] = new RSServiceReference05.ParameterValue(); 
extensionParams[2].Name = "RenderFormat"; 
extensionParams[2].Value = "PDF"; 
extensionParams[3] = new RSServiceReference05.ParameterValue(); 
extensionParams[3].Name = "Subject";   
extensionParams[3].Value = txtSubject.Text; 
extensionParams[4] = new RSServiceReference05.ParameterValue(); 
extensionParams[4].Name = "Comment";    
extensionParams[4].Value = txtMessage.Text; 
extensionParams[5] = new RSServiceReference05.ParameterValue(); 
extensionParams[5].Name = "IncludeLink"; 
extensionParams[5].Value = "False"; 
extensionParams[6] = new RSServiceReference05.ParameterValue(); 
extensionParams[6].Name = "Priority"; 
extensionParams[6].Value = "NORMAL"; 


string matchData = scheduleXml; 

RSServiceReference05.ExtensionSettings extSettings = new RSServiceReference05.ExtensionSettings();    

extSettings.ParameterValues = extensionParams; 
extSettings.Extension = "Report Server Email"; 
    string sub = ""; 
RSServiceReference05.ServerInfoHeader SubID = 
rs.CreateSubscription(bh, "/MyReports/MyTestReport", extSettings, desc, eventType, matchData, parameters, out sub); 
RSServiceReference05.ServerInfoHeader EventID = rs.FireEvent(bh, "TimedSubscription", sub); 
     rs.ExecuteBatch(bh); 

答えて

0

SSRSレポートの購読は、電子メールごとに1つの添付ファイルでのみ設定できます。

私はSQL 2005環境でエグゼクティブSSRSレポートを作成していましたが、私たちのチームには、Webサービスと連携して動作するVB.NETで書かれたレポート生成ユーティリティアプリケーションがありました。レポート生成ユーティリティは、SQLエージェントジョブまたはSSISパッケージによって実行され、その時点で生成される必要がある特定のレポートのコマンドラインスイッチが使用されます。

アプリケーションは最初に特別なデータ処理を実行した後、Webサービスに引数を送信します。 Webサービスは、SSRS APIを使用してパラメータをレポートに送信し、必要なレポートファイルを生成してサーバーに保存しました。すべてのレポートファイルが生成された後、アプリケーションはすべてのレポートファイルを添付した電子メールをビジネスグループに送信しました。

このアプローチの欠点は、レポート生成ユーティリティと、動的に実行するために作成する必要があるメタデータ(ビジネスグループの電子メールアドレス、レポートID、パラメータなど)をサポートする際のメンテナンスオーバーヘッドを作成することです。このアプローチでは、他のエンタープライズシステムに依存していたレポートは、データが準備できた時点でのみ実行できるため、私たちの利益はそれに値するものでした。

1
  1. マスターレポートを1つ作成することから始めてください。これは、 のサブスクリプションでユーザーに電子メールで送信されるレポートになります。
  2. 通常どおり、必要なすべてのレポートをレポートサーバーに作成します。
  3. が必要に応じて、各レポートの見出しと各テキストボックスを移入マスター・レポートにTablixの追加、 例えばMyTestReport1、MyTestReport2は、など。マスターレポートに向かう各レポートについては
  4. 、選択し、右クリック テキストボックスのプロパティ - 操作 - URLに移動します。レポートサーバーにレポートが格納されている に直接URLを入力します(または レポートを開くだけでなく、さらに複雑なものが必要な場合は 式ボックスを使用できます)。

enter image description here今、あなたのサブスクリプションが実行され、マスターレポートは、ユーザーに電子メールで送信されたとき、彼らは彼らが望むレポートと、彼らが必要とどのような形式でのダウンロード(例えばPDFやExcel、CSV)を選択することができます彼らはそれを開きます。

代わりに、あなたはあなたのURLに以下を追加することにより、クリックしたときに添付ファイルを保存するようにユーザーに促すためにハイパーリンクを設定することができます。

PDF

&rs:Format=PDF 

またはExcel

&rs:Format=Excel 
用のために

ここでの代替案は、あなたが達成しようとしているものであり、非常にうまくいくと思います。

関連する問題