ReportingService2005.CreateDataDrivenSubscription(String, ExtensionSettings, DataRetrievalPlan, String, String, String, ParameterValueOrFieldReference[]) Methode

Definition

Erstellt für einen bestimmten Bericht ein datengesteuertes Abonnement.

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

Parameter

Report
String

Die vollqualifizierte URL des Berichts, für den ein datengesteuertes Abonnement erstellt werden soll.

ExtensionSettings
ExtensionSettings

Ein ExtensionSettings-Objekt mit einer Liste von Einstellungen, die für die Übermittlungserweiterung spezifisch sind.

DataRetrievalPlan
DataRetrievalPlan

Ein DataRetrievalPlan-Objekt, das Einstellungen bereitstellt, die erforderlich sind, um Daten aus einer Übermittlungsabfrage abzurufen. Das DataRetrievalPlan-Objekt enthält einen Verweis auf ein DataSetDefinition-Objekt und ein DataSourceDefinitionOrReference-Objekt.

Description
String

Eine aussagekräftige Beschreibung, die Benutzern angezeigt wird.

EventType
String

Der Typ des Ereignisses, das das datengesteuerte Abonnement auslöst. Die gültigen Werte sind TimedSubscription oder SnapshotUpdated.

MatchData
String

Die Daten, die dem angegebenen eventType -Parameter zugeordnet sind. Dieser Parameter wird von einem Ereignis verwendet, um das datengesteuerte Abonnement mit einem ausgelösten Ereignis zu vergleichen.

Parameters
ParameterValueOrFieldReference[]

Ein Array von ParameterValueOrFieldReference-Objekten, das eine Liste der Parameter für den Bericht enthält.

Gibt zurück

String

Ein String-Wert, der eine Abonnement-ID enthält, die das datengesteuerte Abonnement eindeutig in der Berichtsserver-Datenbank identifiziert.

Beispiele

Um dieses Codebeispiel zu kompilieren, müssen Sie auf die Reporting Services WSDL verweisen und bestimmte Namespaces importieren. Weitere Informationen finden Sie unter Kompilieren und Ausführen von Code Beispielen. Im folgenden Codebeispiel wird verwendet CreateDataDrivenSubscription , um der Berichts Server-Datenbank ein neues datengesteuerte Abonnement hinzuzufügen:

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 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 ReportingService2005();  
      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());  
      }  
   }  
}  

Hinweise

In der folgenden Tabelle werden Header- und Berechtigungsinformationen zu diesem Vorgang dargestellt.

SOAP-Header (In) BatchHeaderValue

(Out) ServerInfoHeaderValue
Erforderliche Berechtigungen ExecuteAndView Immer CreateAnySubscription

Die Länge des- Report Parameters darf nicht länger als 260 Zeichen sein. andernfalls wird eine SOAP-Ausnahme mit dem Fehlercode rsitemverlängert ausgelöst.

Der- Report Parameter darf nicht NULL oder leer sein oder die folgenden reservierten Zeichen enthalten: : ? ; @ & = + $ , \ * > < | . " . Sie können den Schrägstrich (/) verwenden, um Elemente im vollständigen Pfadnamen des Ordners zu trennen, aber Sie können ihn nicht am Ende des Ordner namens verwenden.

Sie können die- GetExtensionSettings Methode verwenden, um eine Liste der erforderlichen Einstellungen für eine Übermittlungs Erweiterung abzurufen. Sie müssen Werte für diese erforderlichen Einstellungen im- ExtensionSettings Parameter übergeben. Weitere Informationen zu den Einstellungen für die e-Mail-Übermittlung finden Sie unter Einstellungen für die Reporting Services

Der- DataRetrievalPlan Parameter nimmt ein- DataRetrievalPlan Objekt als Argument an. Das- DataRetrievalPlan Objekt enthält ein DataSet mit einer Übermittlungs Abfrage. Die CommandType -Eigenschaft der Übermittlungs Abfrage (- QueryDefinition Objekt) ist Text für datengesteuerte Abonnements standardmäßig auf festgelegt und muss nicht angegeben werden. Wenn Sie einen Wert für die- CommandType Eigenschaft angeben, muss der Wert lauten Text .

Die Datenquelle, die im Dataset für die Übermittlungs Abfrage bereitgestellt wird oder auf die verwiesen wird, muss über die CredentialRetrieval Einstellung verfügen Store .

Werte für die Einstellungen und Parameter der Übermittlungs Erweiterung können entweder auf statische Werte oder auf Feldverweise festgelegt werden. Wenn ein Feldverweis für die Übermittlungs Erweiterungs Einstellung oder einen Parameter angegeben wird, wird der Wert der Einstellung oder des Parameters Daten gesteuert. Das DataSet mit der Übermittlungs Abfrage verfügt über eine Reihe von Feldern (- Field Objekten), die den Übermittlungs Erweiterungs Einstellungen ( ExtensionParameter -Objekten) und Berichts Parameterwerten (- ParameterValue Objekten) zugeordnet sind. Alle Felder, auf die in den Übermittlungs Erweiterungs Einstellungen und Berichts Parameterwerten verwiesen wird, müssen den Feldern im Dataset entsprechen. Wenn die Übermittlungs Abfrage kein Feld zurückgibt, das in einer Übermittlungs Erweiterungs Einstellung oder einem Parameterwert angegeben ist, löst der Berichts Server einen Fehler aus, wenn das Abonnement verarbeitet wird.

Der Wert des- EventType Parameters muss einem Ereignis entsprechen, das für den Berichts Server konfiguriert ist. Die beiden Ereignisse, die zum Erstellen von Abonnements verwendet werden, sind TimedSubscription und SnapshotUpdated . Verwenden Sie die- ListEvents Methode, um eine Liste aller für den Berichts Server konfigurierten Ereignisse zurückzugeben.

Der Wert des- MatchData Parameters hängt vom Ereignistyp ab. Wenn das Ereignis ein- TimedSubscription Ereignis ist, ScheduleDefinition ist ein-Objekt als MatchData Parameter erforderlich. Sie müssen das ScheduleDefinition Objekt zuerst als XML-Datei serialisieren, um es als Zeichen folgen Wert zu übergeben und basierend auf dem Zeitplan ein Abonnement zu erstellen. Die XML-Struktur kann wie im folgenden Beispiel aussehen:

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

Der Wert des- StartDateTime Elements muss, wenn er als XML-Zeichenfolge gegeben wird, dem Datumsformat ISO 8601 entsprechen. Dieser internationale Datums-und uhrzeitstandard ist das erweiterte Format CCYY-mm-ddThh: mm: SS +/-Z, wobei "CC" das Jahrhundert, "yy" das Jahr, "mm" und den Tag "dd" darstellt. Der Buchstabe "T" ist das Datums-und Uhrzeit Trennzeichen und "hh", "mm", "SS", stellen Stunde, Minute und Sekunde dar. Auf diese Darstellung kann unmittelbar ein "Z" folgen, um die koordinierte Weltzeit (UTC) anzugeben. Um die Zeitzone anzugeben, die als Unterschied zwischen der Ortszeit und der koordinierten Weltzeit dargestellt wird, wird "Z" das Vorzeichen "+" oder "-" vorangestellt, gefolgt von dem Unterschied von UTC, dargestellt als hh: mm.

Wenn die Zeit Plan Definition für einen TimedSubscription freigegebenen Zeitplan ist, müssen Sie die Zeit Plan-ID des freigegebenen Zeitplans als MatchData Parameter übergeben. Die Zeit Plan-ID wird als ( String z. b. "4608ac1b-FC75-4149-9e15-5a8b5781b843") weitergegeben. Die Zeitplan-ID kann durch Aufrufen der- ListSchedules Methode abgerufen werden.

Sie können die- XmlSerializer Klasse verwenden, um die Objektklasse automatisch in eine XML-Zeichenfolge zu konvertieren. Weitere Informationen zur- XmlSerializer Klasse finden Sie unter "System.Xml.Xmlserializer-Klasse" in der Microsoft .NET Framework-Dokumentation.

Wenn es sich bei dem Ereignis um ein SnapshotUpdated Abonnement handelt, sollte der Wert von MatchData null (oder Nothing in Visual Basic) lauten.

Mit dieser Methode wird die LastExecutedSpecified -Eigenschaft des Abonnements auf none , die Status -Eigenschaft des Abonnements auf new subscription und alle Eigenschaften des-Objekts des Abonnements Active false auf festgelegt. Die ModifiedBy -Eigenschaft und die-Eigenschaft ModifiedDate des Berichts werden ebenfalls aktualisiert.

Gilt für: