Freigeben über


ReportingService2005.CreateDataDrivenSubscription 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

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 Codebeispielen. Im folgenden Codebeispiel wird verwendet CreateDataDrivenSubscription , um der Berichtsserver-Datenbank ein neues datengesteuertes 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 UND CreateAnySubscription

Die Länge des Report Parameters darf 260 Zeichen nicht überschreiten. Andernfalls wird eine SOAP-Ausnahme mit dem Fehlercode rsItemLengthExceeded 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 Ordnernamens verwenden.

Sie können die GetExtensionSettings -Methode verwenden, um eine Liste der erforderlichen Einstellungen für eine Übermittlungserweiterung abzurufen. Sie müssen Werte für diese erforderlichen Einstellungen im ExtensionSettings Parameter übergeben. Informationen zu E-Mail-Übermittlungseinstellungen finden Sie unter Reporting Services Übermittlungserweiterungseinstellungen.

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

Die Datenquelle, die im Dataset für die Übermittlungsabfrage bereitgestellt oder referenziert wird, muss über die CredentialRetrieval Einstellung verfügen Store.

Werte für Einstellungen und Parameter der Übermittlungserweiterung können entweder auf statische Werte oder auf Feldverweise festgelegt werden. Wenn ein Feldverweis für die Übermittlungserweiterungseinstellung oder einen Parameter angegeben wird, ist der Wert der Einstellung oder des Parameters datengesteuert. Das Dataset mit der Übermittlungsabfrage verfügt über einen Satz von Feldern (Field -Objekten), die den Übermittlungserweiterungseinstellungen (ExtensionParameter -Objekten) und Berichtsparameterwerten (ParameterValue -Objekte) zugeordnet sind. Alle Felder, auf die in Übermittlungserweiterungseinstellungen und Berichtsparameterwerten verwiesen wird, müssen den Feldern im Dataset entsprechen. Wenn die Übermittlungsabfrage kein Feld zurückgibt, das in einer Übermittlungserweiterungseinstellung oder einem Parameterwert angegeben ist, löst der Berichtsserver bei der Verarbeitung des Abonnements einen Fehler aus.

Der Wert des EventType Parameters muss einem Ereignis entsprechen, das für den Berichtsserver 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 ereignisse zurückzugeben, die für den Berichtsserver konfiguriert sind.

Der Wert des MatchData Parameters hängt vom Ereignistyp ab. Wenn das Ereignis ein TimedSubscription Ereignis ist, ist ein ScheduleDefinition -Objekt als MatchData Parameter erforderlich. Sie müssen das ScheduleDefinition Objekt zunächst als XML serialisieren, um es als Zeichenfolgenwert zu übergeben und ein Abonnement basierend auf dem Zeitplan 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, wenn es als XML-Zeichenfolge übergeben wird, sollte dem Datumsformat ISO 8601 entsprechen. Dieser internationale Datums- und Uhrzeitstandard ist das erweiterte Format CCYY-MM-DDThh:mm:ss+/-Z, wobei "CC" das Jahrhundert, "JJ" das Jahr, "MM" den Monat und "TT" den Tag darstellt. Der Buchstabe "T" ist das Datums- und Uhrzeittrennzeichen und "hh", "mm", "ss" steht für Stunde, Minute und Sekunde. Dieser 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" ein "+"- oder "-"-Zeichen vorangestellt, gefolgt von der Differenz von UTC, die als hh:mm dargestellt wird.

Wenn es sich bei der Zeitplandefinition für einen um TimedSubscription einen freigegebenen Zeitplan handelt, müssen Sie die Zeitplan-ID des freigegebenen Zeitplans MatchData als Parameter übergeben. Die Zeitplan-ID wird als übergeben, z. B String. "4608ac1b-fc75-4149-9e15-5a8b5781b843". Die Zeitplan-ID kann durch Aufrufen der ListSchedules -Methode abgerufen werden.

Sie können die XmlSerializer -Klasse verwenden, um Ihre 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 das Ereignis ein SnapshotUpdated Abonnement ist, sollte der Wert von MatchData (oder Nothing in Visual Basic) sein null .

Mit dieser Methode wird die LastExecutedSpecified -Eigenschaft des Abonnements auf none, die Status -Eigenschaft des Abonnements auf new subscriptionund alle Eigenschaften des Abonnementobjekts Active auf falsefestgelegt. Die ModifiedBy Eigenschaften und ModifiedDate des Berichts werden ebenfalls aktualisiert.

Gilt für: