語言

ReportingService2005.CreateSubscription 方法

定義

在報告伺服器資料庫中建立指定報告的訂閱。

public:
 System::String ^ CreateSubscription(System::String ^ Report, ReportService2005::ExtensionSettings ^ ExtensionSettings, System::String ^ Description, System::String ^ EventType, System::String ^ MatchData, cli::array <ReportService2005::ParameterValue ^> ^ Parameters);
public string CreateSubscription(string Report, ReportService2005.ExtensionSettings ExtensionSettings, string Description, string EventType, string MatchData, ReportService2005.ParameterValue[] Parameters);
member this.CreateSubscription : string * ReportService2005.ExtensionSettings * string * string * string * ReportService2005.ParameterValue[] -> string
Public Function CreateSubscription (Report As String, ExtensionSettings As ExtensionSettings, Description As String, EventType As String, MatchData As String, Parameters As ParameterValue()) As String

參數

Report
String

建立訂閱的報告完整路徑名稱。

ExtensionSettings
ExtensionSettings

一個 ExtensionSettings 包含特定於交付擴充功能的設定清單的物件。

Description
String

一個有意義的描述,會顯示給使用者。

EventType
String

觸發訂閱的事件類型。 有效值為 TimedSubscription 或 SnapshotUpdated。

MatchData
String

與指定 EventType 參數相關聯的資料。 這個參數被事件用來將訂閱與已觸發的事件匹配。

Parameters
ParameterValue[]

一個包含報告參數清單的物件陣列 ParameterValue 。

傳回

訂閱 ID,唯一識別該訂閱在報表伺服器資料庫中。

範例

要編譯此程式碼範例,您必須參考 Reporting Services WSDL 並匯入特定命名空間。 欲了解更多資訊,請參閱編 譯與執行程式碼範例。 以下程式碼範例用於 CreateSubscription 新增一份訂閱到報告伺服器資料庫:

Imports System  
Imports System.Web.Services.Protocols  

Class Sample  
   Public Shared Sub Main()  
      Dim rs As New ReportingService2005()  
      rs.Credentials = System.Net.CredentialCache.DefaultCredentials  

      Dim report As String = "/SampleReports/Employee Sales Summary"  
      Dim desc As String = "Send email to anyone@microsoft.com"  
      Dim eventType As String = "TimedSubscription"  
      Dim scheduleXml As String = "<ScheduleDefinition><StartDateTime>2003-02-24T09:00:00-08:00</StartDateTime><WeeklyRecurrence><WeeksInterval>1</WeeksInterval><DaysOfWeek><Monday>True</Monday></DaysOfWeek></WeeklyRecurrence></ScheduleDefinition>"  

      Dim extensionParams(7) As ParameterValue  

      extensionParams(0) = New ParameterValue()  
      extensionParams(0).Name = "TO"  
      extensionParams(0).Value = "dank@adventure-works.com"  

      extensionParams(1) = New ParameterValue()  
      extensionParams(1).Name = "ReplyTo"  
      extensionParams(1).Value = "reporting@adventure-works.com"  

      extensionParams(2) = New ParameterValue()  
      extensionParams(2).Name = "IncludeReport"  
      extensionParams(2).Value = "True"  

      extensionParams(3) = New ParameterValue()  
      extensionParams(3).Name = "RenderFormat"  
      extensionParams(3).Value = "MHTML"  

      extensionParams(4) = New ParameterValue()  
      extensionParams(4).Name = "Subject"  
      extensionParams(4).Value = "@ReportName was executed at @ExecutionTime"  

      extensionParams(5) = New ParameterValue()  
      extensionParams(5).Name = "Comment"  
      extensionParams(5).Value = "Here is your daily sales report for Michael."  

      extensionParams(6) = New ParameterValue()  
      extensionParams(6).Name = "IncludeLink"  
      extensionParams(6).Value = "True"  

      extensionParams(7) = New ParameterValue()  
      extensionParams(7).Name = "Priority"  
      extensionParams(7).Value = "NORMAL"  

      Dim parameter As New ParameterValue()  
      parameter.Name = "EmpID"  
      parameter.Value = "38"  

      Dim parameters(1) As ParameterValue  
      parameters(0) = parameter  

      Dim matchData As String = scheduleXml  
      Dim extSettings As New ExtensionSettings()  
      extSettings.ParameterValues = extensionParams  
      extSettings.Extension = "Report Server Email"  

      Try  
         rs.CreateSubscription(report, extSettings, desc, eventType, matchData, parameters)  

      Catch e As SoapException  
         Console.WriteLine(e.Detail.InnerXml.ToString())  
      End Try  
   End Sub 'Main  
End Class 'Sample  
using System;  
using System.Web.Services.Protocols;  

class Sample  
{  
   public static void Main()  
   {  
      ReportingService2005 rs = new ReportingService2005();  
      rs.Credentials = System.Net.CredentialCache.DefaultCredentials;  

      string report = "/SampleReports/Employee Sales Summary";  
      string desc = "Send email to anyone@microsoft.com";  
      string eventType = "TimedSubscription";  
      string scheduleXml = @"<ScheduleDefinition><StartDateTime>2003-02-24T09:00:00-08:00</StartDateTime><WeeklyRecurrence><WeeksInterval>1</WeeksInterval><DaysOfWeek><Monday>True</Monday></DaysOfWeek></WeeklyRecurrence></ScheduleDefinition>";  

      ParameterValue[] extensionParams = new ParameterValue[8];  

      extensionParams[0] = new ParameterValue();  
      extensionParams[0].Name = "TO";  
      extensionParams[0].Value = "dank@adventure-works.com";  

      extensionParams[1] = new ParameterValue();  
      extensionParams[1].Name = "ReplyTo";  
      extensionParams[1].Value = "reporting@adventure-works.com";  

      extensionParams[2] = new ParameterValue();  
      extensionParams[2].Name = "IncludeReport";  
      extensionParams[2].Value = "True";  

      extensionParams[3] = new ParameterValue();  
      extensionParams[3].Name = "RenderFormat";  
      extensionParams[3].Value = "MHTML";  

      extensionParams[4] = new ParameterValue();  
      extensionParams[4].Name = "Subject";  
      extensionParams[4].Value = "@ReportName was executed at @ExecutionTime";  

      extensionParams[5] = new ParameterValue();  
      extensionParams[5].Name = "Comment";  
      extensionParams[5].Value = "Here is your daily sales report for Michael.";  

      extensionParams[6] = new ParameterValue();  
      extensionParams[6].Name = "IncludeLink";  
      extensionParams[6].Value = "True";  

      extensionParams[7] = new ParameterValue();  
      extensionParams[7].Name = "Priority";  
      extensionParams[7].Value = "NORMAL";  

      ParameterValue parameter = new ParameterValue();  
      parameter.Name = "EmpID";  
      parameter.Value = "38";  

      ParameterValue[] parameters = new ParameterValue[1];  
      parameters[0] = parameter;  

      string matchData = scheduleXml;  
      ExtensionSettings extSettings = new ExtensionSettings();  
      extSettings.ParameterValues = extensionParams;  
      extSettings.Extension = "Report Server Email";  

      try  
      {  
         rs.CreateSubscription(report, extSettings, desc, eventType, matchData, parameters);  
      }  

      catch (SoapException e)  
      {  
         Console.WriteLine(e.Detail.InnerXml.ToString());  
      }  
   }  
}  

備註

下表顯示此操作的標頭與權限資訊。

SOAP 標頭 (在) BatchHeaderValue

(出局) ServerInfoHeaderValue
必要權限 ExecuteAndView 且 (CreateAnySubscription 或 CreateSubscription)

你可以用這個 GetExtensionSettings 方法取得交付擴充所需的設定清單。 你必須在參數 ExtensionSettings 中傳遞這些必要設定的值。 有關電子郵件投遞設定的資訊,請參閱 Reporting Services Delivery 擴充設定。

參數的 EventType 值必須對應於為報告伺服器設定的事件。 用來建立訂閱的兩個活動是 TimedSubscription 和 SnapshotUpdated。 使用該 ListEvents 方法回傳為報告伺服器所設定的所有事件清單。

參數的 MatchData 值取決於事件類型。 若事件為 TimedSubscription 事件,則需以 ScheduleDefinition 物件作為 MatchData 參數。 你必須先將物件序列化 ScheduleDefinition 為 XML,然後以字串值傳遞,並根據排程建立訂閱。 XML 結構可能如下範例所示:

<ScheduleDefinition>  
   <WeeklyRecurrence>  
      <StartDateTime>2004-06-24T09:00:00-08:00</StartDateTime>  
      <WeeksInterval>1</WeeksInterval>  
      <DaysOfWeek>  
         <Monday>True</Monday>  
         </DaysOfWeek>  
   </WeeklyRecurrence>  
</ScheduleDefinition>  

當以 XML 字串傳遞時 StartDateTime ,元素的值應對應日期格式 ISO 8601。 此國際日期與時間標準為擴展格式 CCYY-MM-DDThh:mm:ss+/-Z,其中「CC」代表世紀,「YY」代表年份,「MM」代表月份,「DD」代表日。 字母「T」代表日期與時間分隔符,「hh」、「mm」、「ss」分別代表時、分鐘和秒。 此表示法後可緊接「Z」以表示協調世界時(UTC)。 為了表示時區,以當地時間與協調世界時的差值表示,「Z」前會加上「+」或「-」符號,接著是與UTC的差值,表示為hh:mm。

如果 TimedSubscription 的排程定義是共享排程,你必須將共享排程的排程 ID 作為 MatchData 參數傳遞。 Schedule ID 會以 String,例如「4608ac1b-fc75-4149-9e15-5a8b5781b843」傳遞。 可透過呼叫該 ListSchedules 方法取得排程 ID。

你可以使用 XmlSerializer 類別自動將物件類別轉換成 XML 字串。 欲了解更多關於 XmlSerializer 類別的資訊,請參閱 Microsoft .NET Framework 文件中的「System.Xml.XmlSerializer 類別」。

如果事件是 SnapshotUpdated 訂閱,值MatchData應該是null(或Nothing在 Visual Basic 中)。

使用此方法將認購的性質設為 false,認購LastExecutedSpecified的性質為 ,Status認購的性質new subscription為 ,認購的所有性質Activefalse為 。 ModifiedBy ModifiedDate報告的性質也已更新。

適用於