ReportingService2010.CreateDataDrivenSubscription Metode

Definisi

Membuat langganan berbasis data untuk item tertentu. Metode ini berlaku untuk Report jenis item.

public:
 System::String ^ CreateDataDrivenSubscription(System::String ^ ItemPath, ReportService2010::ExtensionSettings ^ ExtensionSettings, ReportService2010::DataRetrievalPlan ^ DataRetrievalPlan, System::String ^ Description, System::String ^ EventType, System::String ^ MatchData, cli::array <ReportService2010::ParameterValueOrFieldReference ^> ^ Parameters);
[System.Web.Services.Protocols.SoapDocumentMethod("http://schemas.microsoft.com/sqlserver/reporting/2010/03/01/ReportServer/CreateDataDrivenSubscription", ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped, RequestNamespace="http://schemas.microsoft.com/sqlserver/reporting/2010/03/01/ReportServer", ResponseNamespace="http://schemas.microsoft.com/sqlserver/reporting/2010/03/01/ReportServer", Use=System.Web.Services.Description.SoapBindingUse.Literal)]
[System.Web.Services.Protocols.SoapHeader("ServerInfoHeaderValue", Direction=System.Web.Services.Protocols.SoapHeaderDirection.Out)]
[System.Web.Services.Protocols.SoapHeader("TrustedUserHeaderValue")]
public string CreateDataDrivenSubscription (string ItemPath, ReportService2010.ExtensionSettings ExtensionSettings, ReportService2010.DataRetrievalPlan DataRetrievalPlan, string Description, string EventType, string MatchData, ReportService2010.ParameterValueOrFieldReference[] Parameters);
[<System.Web.Services.Protocols.SoapDocumentMethod("http://schemas.microsoft.com/sqlserver/reporting/2010/03/01/ReportServer/CreateDataDrivenSubscription", ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped, RequestNamespace="http://schemas.microsoft.com/sqlserver/reporting/2010/03/01/ReportServer", ResponseNamespace="http://schemas.microsoft.com/sqlserver/reporting/2010/03/01/ReportServer", Use=System.Web.Services.Description.SoapBindingUse.Literal)>]
[<System.Web.Services.Protocols.SoapHeader("ServerInfoHeaderValue", Direction=System.Web.Services.Protocols.SoapHeaderDirection.Out)>]
[<System.Web.Services.Protocols.SoapHeader("TrustedUserHeaderValue")>]
member this.CreateDataDrivenSubscription : string * ReportService2010.ExtensionSettings * ReportService2010.DataRetrievalPlan * string * string * string * ReportService2010.ParameterValueOrFieldReference[] -> string
Public Function CreateDataDrivenSubscription (ItemPath As String, ExtensionSettings As ExtensionSettings, DataRetrievalPlan As DataRetrievalPlan, Description As String, EventType As String, MatchData As String, Parameters As ParameterValueOrFieldReference()) As String

Parameter

ItemPath
String

URL item yang sepenuhnya memenuhi syarat untuk membuat langganan berbasis data, termasuk nama file dan, dalam mode SharePoint, ekstensi.

ExtensionSettings
ExtensionSettings

Objek ExtensionSettings yang berisi daftar pengaturan yang khusus untuk ekstensi pengiriman.

DataRetrievalPlan
DataRetrievalPlan

Objek DataRetrievalPlan yang menyediakan pengaturan yang diperlukan untuk mengambil data dari kueri pengiriman. Objek DataRetrievalPlan berisi referensi ke DataSetDefinition objek dan DataSourceDefinitionOrReference objek.

Description
String

Deskripsi yang bermakna yang ditampilkan kepada pengguna.

EventType
String

Jenis peristiwa yang memicu langganan berbasis data. Nilai yang valid adalah TimedSubscription atau SnapshotUpdated.

MatchData
String

Data yang terkait dengan parameter yang ditentukan EventType . Parameter ini digunakan oleh peristiwa untuk mencocokkan langganan berbasis data dengan peristiwa yang telah diaktifkan.

Parameters
ParameterValueOrFieldReference[]

Array ParameterValueOrFieldReference objek yang berisi daftar parameter untuk item.

Mengembalikan

Nilai String yang berisi ID langganan yang secara unik mengidentifikasi langganan berbasis data di database server laporan atau pustaka SharePoint.

Atribut

Contoh

Untuk mengkompilasi contoh kode ini, Anda harus mereferensikan Reporting Services WSDL dan mengimpor namespace tertentu. Untuk informasi selengkapnya, lihat Mengkompilasi dan Menjalankan Contoh Kode. Contoh kode berikut menggunakan CreateDataDrivenSubscription untuk menambahkan langganan berbasis data baru ke database server laporan:

Imports System  
Imports System.Web.Services.Protocols  

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

      Dim report As String = "/SampleReports/Employee Sales Summary"  
      Dim description As String = "My new data driven subscription"  

      ' Set the extension setting as report server email.  
      Dim settings As New ExtensionSettings()  
      settings.Extension = "Report Server Email"  

      ' Set the extension parameter values.  
      Dim extensionParams(7) As ParameterValueOrFieldReference  

      Dim [to] As New ParameterFieldReference() ' Data-driven.  
      [to].ParameterName = "TO"  
      [to].FieldAlias = "EmailAddress"  
      extensionParams(0) = [to]  

      Dim replyTo As New ParameterValue()  
      replyTo.Name = "ReplyTo"  
    replyTo.Value = "dank@adventure-works.com"  
      extensionParams(1) = replyTo  

      Dim includeReport As New ParameterValue()  
      includeReport.Name = "IncludeReport"  
      includeReport.Value = "False"  
      extensionParams(2) = includeReport  

      Dim renderFormat As New ParameterValue()  
      renderFormat.Name = "RenderFormat"  
      renderFormat.Value = "HTML4.0"  
      extensionParams(3) = renderFormat  

      Dim priority As New ParameterValue()  
      priority.Name = "Priority"  
      priority.Value = "NORMAL"  
      extensionParams(4) = priority  

      Dim subject As New ParameterValue()  
      subject.Name = "Subject"  
      subject.Value = "Your sales report"  
      extensionParams(5) = subject  

      Dim comment As New ParameterValue()  
      comment.Name = "Comment"  
      comment.Value = "Here is the link to your report."  
      extensionParams(6) = comment  

      Dim includeLink As New ParameterValue()  
      includeLink.Name = "IncludeLink"  
      includeLink.Value = "True"  
      extensionParams(7) = includeLink  

      settings.ParameterValues = extensionParams  

      ' Create the data source for the delivery query.  
      Dim delivery As New DataSource()  
      delivery.Name = ""  
      Dim dataSourceDefinition As New DataSourceDefinition()  
      dataSourceDefinition.ConnectString = "data source=(local);initial catalog=Employee"  
      dataSourceDefinition.CredentialRetrieval = CredentialRetrievalEnum.Store  
      dataSourceDefinition.Enabled = True  
      dataSourceDefinition.EnabledSpecified = True  
      dataSourceDefinition.Extension = "SQL"  
      dataSourceDefinition.ImpersonateUserSpecified = False  
      dataSourceDefinition.UserName = "username"  
      dataSourceDefinition.Password = "runUnAtt1"  
      delivery.Item = dataSourceDefinition  

      ' Create the fields list.  
      Dim fieldsList(1) As Field  
      fieldsList(0) = New Field()  
      fieldsList(0).Name = "EmailAddress"  
      fieldsList(0).Alias = "EmailAddress"  
      fieldsList(1) = New Field()  
      fieldsList(1).Name = "EmpID"  
      fieldsList(1).Alias = "EmpID"  

      ' Create the data set for the delivery query.  
      Dim dataSetDefinition As New DataSetDefinition()  
      dataSetDefinition.AccentSensitivitySpecified = False  
      dataSetDefinition.CaseSensitivitySpecified = False  
      dataSetDefinition.KanatypeSensitivitySpecified = False  
      dataSetDefinition.WidthSensitivitySpecified = False  
      dataSetDefinition.Fields = fieldsList  
      Dim queryDefinition As New QueryDefinition()  
      queryDefinition.CommandText = "Select * from MailList"  
      queryDefinition.CommandType = "Text"  
      queryDefinition.Timeout = 45  
      queryDefinition.TimeoutSpecified = True  
      dataSetDefinition.Query = queryDefinition  
      Dim results As New DataSetDefinition()  
      Dim changed As Boolean  
      Dim paramNames as String() = Nothing  

      Try  
         results = rs.PrepareQuery(delivery, dataSetDefinition, changed, paramNames)  
      Catch e As SoapException  
         Console.WriteLine(e.Detail.InnerText.ToString())  
      End Try  

      Dim dataRetrieval As New DataRetrievalPlan()  
      dataRetrieval.DataSet = results  
      dataRetrieval.Item = dataSourceDefinition  

      ' Set the event type and match data for the delivery.  
      Dim eventType As String = "TimedSubscription"  
      Dim matchData As String = "<ScheduleDefinition><StartDateTime>2003-04-14T19:15:00-07:00</StartDateTime><WeeklyRecurrence><WeeksInterval>1</WeeksInterval><DaysOfWeek><Monday>True</Monday><Tuesday>True</Tuesday><Wednesday>True</Wednesday><Thursday>True</Thursday><Friday>True</Friday></DaysOfWeek></WeeklyRecurrence></ScheduleDefinition>"  

      ' Set the report parameter values.  
      Dim parameters(2) As ParameterValueOrFieldReference  

      Dim empID As New ParameterFieldReference() ' Data-driven.  
      empID.ParameterName = "EmpID"  
      empID.FieldAlias = "EmpID"  
      parameters(0) = empID  

      Dim reportYear As New ParameterValue()  
      reportYear.Name = "ReportYear"  
      reportYear.Value = "2004"  
      parameters(1) = reportYear  

      Dim reportMonth As New ParameterValue()  
      reportMonth.Name = "ReportMonth"  
      reportMonth.Value = "6" ' June  
      parameters(2) = reportMonth  

      Try  
         Dim subscriptionID As String = rs.CreateDataDrivenSubscription(report, settings, dataRetrieval, description, eventType, matchData, parameters)  
      Catch e As SoapException  
         Console.WriteLine(e.Detail.InnerText.ToString())  
      End Try  
   End Sub 'Main  
End Class 'Sample  
using System;  
using System.Web.Services.Protocols;  

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

      string report = "/SampleReports/Employee Sales Summary";  
      string description = "My new data driven subscription";  

      // Set the extension setting as report server email.  
      ExtensionSettings settings = new ExtensionSettings();  
      settings.Extension = "Report Server Email";  

      // Set the extension parameter values.  
      ParameterValueOrFieldReference[] extensionParams =   
         new ParameterValueOrFieldReference[8];  

      ParameterFieldReference to = new ParameterFieldReference(); // Data-driven.  
      to.ParameterName = "TO";  
      to.FieldAlias = "EmailAddress";   
      extensionParams[0] = to;  

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

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

      ParameterValue renderFormat = new ParameterValue();  
      renderFormat.Name = "RenderFormat";  
      renderFormat.Value = "HTML4.0";  
      extensionParams[3] = renderFormat;  

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

      ParameterValue subject = new ParameterValue();  
      subject.Name = "Subject";  
      subject.Value = "Your sales report";  
      extensionParams[5] = subject;  

      ParameterValue comment = new ParameterValue();  
      comment.Name = "Comment";  
      comment.Value = "Here is the link to your report.";  
      extensionParams[6] = comment;  

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

      settings.ParameterValues = extensionParams;  

      // Create the data source for the delivery query.  
      DataSource delivery = new DataSource();  
      delivery.Name = "";  
      DataSourceDefinition dataSourceDefinition = new DataSourceDefinition();  
      dataSourceDefinition.ConnectString = "data source=(local);initial catalog=Employee";  
      dataSourceDefinition.CredentialRetrieval = CredentialRetrievalEnum.Store;  
      dataSourceDefinition.Enabled = true;  
      dataSourceDefinition.EnabledSpecified = true;  
      dataSourceDefinition.Extension = "SQL";  
      dataSourceDefinition.ImpersonateUserSpecified = false;  
      dataSourceDefinition.UserName = "username";  
      dataSourceDefinition.Password = "runUnAtt1";  
      delivery.Item = dataSourceDefinition;  

      // Create the fields list.  
      Field[] fieldsList = new Field[2];  
      fieldsList[0] = new Field();  
      fieldsList[0].Name = "EmailAddress";  
      fieldsList[0].Alias = "EmailAddress";  
      fieldsList[1] = new Field();  
      fieldsList[1].Name = "EmpID";  
      fieldsList[1].Alias = "EmpID";  

      // Create the data set for the delivery query.  
      DataSetDefinition dataSetDefinition = new DataSetDefinition();  
      dataSetDefinition.AccentSensitivitySpecified = false;  
      dataSetDefinition.CaseSensitivitySpecified = false;  
      dataSetDefinition.KanatypeSensitivitySpecified = false;  
      dataSetDefinition.WidthSensitivitySpecified = false;  
      dataSetDefinition.Fields = fieldsList;  
      QueryDefinition queryDefinition = new QueryDefinition();  
      queryDefinition.CommandText = "Select * from MailList";  
      queryDefinition.CommandType = "Text";  
      queryDefinition.Timeout = 45;  
      queryDefinition.TimeoutSpecified = true;  
      dataSetDefinition.Query = queryDefinition;  
      DataSetDefinition results = new DataSetDefinition();  
      bool changed;  
      string[] paramNames;  

      try  
      {  
         results = rs.PrepareQuery(delivery, dataSetDefinition, out changed, out paramNames);  
      }  
      catch (SoapException e)  
      {  
         Console.WriteLine(e.Detail.InnerText.ToString());  
      }  

      DataRetrievalPlan dataRetrieval = new DataRetrievalPlan();  
      dataRetrieval.DataSet = results;  
      dataRetrieval.Item = dataSourceDefinition;  
      // Set the event type and match data for the delivery.  
      string eventType = "TimedSubscription";  
      string matchData = "<ScheduleDefinition><StartDateTime>2003-04-14T19:15:00-07:00</StartDateTime><WeeklyRecurrence><WeeksInterval>1</WeeksInterval><DaysOfWeek><Monday>True</Monday><Tuesday>True</Tuesday><Wednesday>True</Wednesday><Thursday>True</Thursday><Friday>True</Friday></DaysOfWeek></WeeklyRecurrence></ScheduleDefinition>";  

      // Set the report parameter values.  
      ParameterValueOrFieldReference[] parameters = new ParameterValueOrFieldReference[3];  

      ParameterFieldReference empID = new ParameterFieldReference(); // Data-driven.  
      empID.ParameterName = "EmpID";  
      empID.FieldAlias = "EmpID";  
      parameters[0] = empID;  

      ParameterValue reportYear = new ParameterValue();  
      reportYear.Name = "ReportYear";  
      reportYear.Value = "2004";  
      parameters[1] = reportYear;  

      ParameterValue reportMonth = new ParameterValue();  
      reportMonth.Name = "ReportMonth";  
      reportMonth.Value = "6"; // June  
      parameters[2] = reportMonth;  

      try  
      {  
         string subscriptionID = rs.CreateDataDrivenSubscription(   
   report, settings, dataRetrieval, description, eventType, matchData, parameters);  
      }  
      catch (SoapException e)  
      {  
         Console.WriteLine(e.Detail.InnerText.ToString());  
      }  
   }  
}  

Keterangan

Tabel di bawah ini memperlihatkan informasi header dan izin pada operasi ini.

Penggunaan Header SOAP (Dalam) TrustedUserHeaderValue

(Keluar) ServerInfoHeaderValue
Izin Yang Diperlukan Mode Asli ExecuteAndView DAN CreateAnySubscription
Izin yang Diperlukan Mode SharePoint <xref:Microsoft.SharePoint.SPBasePermissions.ViewListItems> DAN <xref:Microsoft.SharePoint.SPBasePermissions.ManageAlerts>

Panjang ItemPath parameter tidak boleh melebihi 260 karakter; jika tidak, pengecualian SOAP dilemparkan dengan kode kesalahan rsItemLengthExceeded.

Parameter ItemPath tidak boleh null atau kosong atau berisi karakter khusus berikut: : ? ; @ & = + $ , \ * > < | . ". Anda dapat menggunakan karakter garis miring (/) untuk memisahkan item dalam nama jalur lengkap folder, tetapi Anda tidak dapat menggunakannya di akhir nama folder.

Anda dapat menggunakan GetExtensionSettings metode untuk mengambil daftar pengaturan yang diperlukan untuk ekstensi pengiriman. Anda harus meneruskan nilai untuk pengaturan yang diperlukan ini ExtensionSettings dalam parameter . Untuk informasi tentang pengaturan pengiriman email, lihat Pengaturan Ekstensi Pengiriman Reporting Services.

Parameter DataRetrievalPlan mengambil DataRetrievalPlan objek sebagai argumennya. Objek berisi himpunan DataRetrievalPlan data dengan kueri pengiriman. Properti CommandType kueri pengiriman (QueryDefinition objek) diatur ke Text secara default untuk langganan berbasis data dan tidak harus ditentukan. Jika Anda menentukan nilai untuk CommandType properti , nilainya harus Text.

Sumber data yang disediakan atau dirujuk dalam himpunan data untuk kueri pengiriman harus memiliki CredentialRetrieval pengaturan Store.

Nilai untuk pengaturan dan parameter ekstensi pengiriman dapat diatur ke nilai statis atau ke referensi bidang. Saat referensi bidang ditentukan untuk pengaturan ekstensi pengiriman atau parameter, nilai pengaturan atau parameter didorong oleh data. Himpunan data dengan kueri pengiriman memiliki sekumpulan bidang (Field objek) yang dipetakan ke pengaturan ekstensi pengiriman (ExtensionParameter objek) dan nilai parameter laporan (ParameterValue objek). Semua bidang yang dirujuk dalam pengaturan ekstensi pengiriman dan nilai parameter laporan harus sesuai dengan bidang dalam himpunan data. Jika kueri pengiriman tidak mengembalikan bidang yang ditentukan dalam pengaturan ekstensi pengiriman atau nilai parameter, server laporan menimbulkan kesalahan saat langganan diproses.

Nilai EventType parameter harus sesuai dengan peristiwa yang dikonfigurasi untuk server laporan. Dua peristiwa yang digunakan untuk membuat langganan adalah TimedSubscription dan SnapshotUpdated. ListEvents Gunakan metode untuk mengembalikan daftar semua peristiwa yang dikonfigurasi untuk server laporan.

Nilai MatchData parameter tergantung pada jenis peristiwa. Jika peristiwa adalah TimedSubscription peristiwa, ScheduleDefinition objek diperlukan sebagai MatchData parameter . Anda harus terlebih dahulu membuat serialisasi ScheduleDefinition objek sebagai XML untuk meneruskannya sebagai nilai string dan membuat langganan berdasarkan jadwal. Struktur XML mungkin terlihat seperti yang ada dalam contoh berikut:

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

Nilai StartDateTime elemen saat diteruskan sebagai string XML harus sesuai dengan format tanggal ISO 8601. Standar tanggal dan waktu internasional ini adalah format diperpanjang CCYY-MM-DDThh:mm:ss+/-Z di mana "CC" mewakili abad, "YY" tahun, "MM" bulan dan "DD" hari itu. Huruf "T" adalah pemisah tanggal dan waktu dan masing-masing "hh", "mm", "ss" mewakili jam, menit, dan detik. Representasi ini dapat segera diikuti oleh "Z" untuk menunjukkan Waktu Universal Terkoordinasi (UTC). Untuk menunjukkan zona waktu, direpresentasikan sebagai perbedaan antara waktu setempat dan Waktu Universal Terkoordinasi, "Z" didahului oleh tanda "+" atau "-", diikuti oleh perbedaan dari UTC yang diwakili sebagai hh:mm.

Jika definisi jadwal untuk adalah TimedSubscription jadwal bersama, Anda harus meneruskan ID jadwal jadwal bersama sebagai MatchData parameter . ID jadwal diteruskan sebagai String, misalnya, "4608ac1b-fc75-4149-9e15-5a8b5781b843". ID jadwal dapat diperoleh dengan memanggil ListSchedules metode .

Anda dapat menggunakan XmlSerializer kelas untuk mengonversi kelas objek Anda menjadi string XML secara otomatis. Untuk informasi selengkapnya tentang XmlSerializer kelas , lihat "System.Xml. Kelas XmlSerializer" dalam dokumentasi Microsoft .NET Framework.

Jika acara adalah SnapshotUpdated langganan, nilainya MatchData harus null (atau Nothing di Visual Basic).

Menggunakan metode ini mengatur LastExecutedSpecified properti langganan ke false, Status properti langganan ke new subscription, dan semua properti objek langganan Activeke false. Properti ModifiedBy dan ModifiedDate item juga diperbarui.

Berlaku untuk