ReportingService2005.CreateDataDrivenSubscription Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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 subscription
und alle Eigenschaften des Abonnementobjekts Active auf false
festgelegt. Die ModifiedBy Eigenschaften und ModifiedDate des Berichts werden ebenfalls aktualisiert.