ReportingService2010.CreateDataDrivenSubscription Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Crea un abbonamento basato sui dati per un articolo specificato. Questo metodo si applica al tipo di Report oggetto.
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
Parametri
- ItemPath
- String
L'URL completamente qualificato dell'elemento per cui creare un abbonamento basato sui dati, includendo il nome del file e, in modalità SharePoint, l'estensione.
- ExtensionSettings
- ExtensionSettings
Un oggetto che contiene una lista di impostazioni specifiche per l'estensione ExtensionSettings di consegna.
- DataRetrievalPlan
- DataRetrievalPlan
Un DataRetrievalPlan oggetto che fornisce le impostazioni necessarie per recuperare dati da una query di consegna. L'oggetto DataRetrievalPlan contiene un riferimento a un DataSetDefinition oggetto e a un DataSourceDefinitionOrReference oggetto.
- Description
- String
Una descrizione significativa che viene mostrata agli utenti.
- EventType
- String
Il tipo di evento che attiva l'abbonamento basato sui dati. I valori validi sono TimedSubscription o SnapshotUpdated.
- MatchData
- String
I dati associati al parametro specificato EventType . Questo parametro viene utilizzato da un evento per abbinare l'abbonamento basato sui dati con un evento che è stato attivato.
- Parameters
- ParameterValueOrFieldReference[]
Un array di ParameterValueOrFieldReference oggetti che contiene un elenco di parametri per l'elemento.
Valori restituiti
Un String valore contenente un ID di abbonamento che identifica in modo univoco l'abbonamento guidato dai dati nel database del server di report o nella raccolta di SharePoint.
- Attributi
Esempio
Per compilare questo esempio di codice, devi fare riferimento al WSDL di Reporting Services e importare determinati namespace. Per maggiori informazioni, vedi Compiling and Conducting Code Examples. Il seguente esempio di codice viene utilizzato CreateDataDrivenSubscription per aggiungere un nuovo abbonamento basato sui dati al database del server di rapporti:
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());
}
}
}
Commenti
La tabella sottostante mostra informazioni sull'intestazione e sui permessi di questa operazione.
| Utilizzo dell'intestazione SOAP | (Dentro) TrustedUserHeaderValue (Fuori) ServerInfoHeaderValue |
| Permessi richiesti per la modalità nativa | ExecuteAndView E CreateAnySubscription |
| Permessi richiesti in modalità SharePoint | <xref:Microsoft.SharePoint.SPBasePermissions.ViewListItems> E <xref:Microsoft.SharePoint.SPBasePermissions.ManageAlerts> |
La lunghezza del ItemPath parametro non può superare i 260 caratteri; altrimenti, viene lanciata un'eccezione SOAP con il codice di errore rsItemLengthExceeded.
Il ItemPath parametro non può essere nullo o vuoto né contenere i seguenti caratteri riservati: : ? ; @ & = + $ , \ * > < | . ". Puoi usare il carattere a barra avanzata (/) per separare gli elementi nel nome completo del percorso della cartella, ma non puoi usarlo alla fine del nome della cartella.
Puoi usare il GetExtensionSettings metodo per recuperare una lista delle impostazioni richieste per un'estensione di consegna. Devi passare i valori per queste impostazioni richieste nel ExtensionSettings parametro. Per informazioni sulle impostazioni di consegna e-mail, consulta le Impostazioni di estensione di consegna di Reporting Services.
Il parametro DataRetrievalPlan prende un DataRetrievalPlan oggetto come argomento. L'oggetto DataRetrievalPlan contiene un dataset con una query di consegna. La CommandType proprietà della query di consegna (QueryDefinition oggetto) è impostata di default Text per le sottoscrizioni guidate dai dati e non deve essere specificata. Se specifichi un valore per la CommandType proprietà, il valore deve essere Text.
La sorgente dati fornita o citata nel dataset per la query di consegna deve avere un'impostazione CredentialRetrieval di Store.
I valori per le impostazioni e i parametri delle estensioni di consegna possono essere impostati sia su valori statici che su riferimenti di campo. Quando un riferimento di campo viene specificato per l'impostazione dell'estensione di consegna o un parametro, il valore dell'impostazione o del parametro è guidato dai dati. Il dataset con la query di consegna ha un insieme di campi (Field oggetti) che sono mappati alle impostazioni dell'estensione di consegna (ExtensionParameter oggetti) e riportano i valori dei parametri (ParameterValue oggetti). Tutti i campi riferiti nelle impostazioni di estensione di consegna e nei valori dei parametri del report devono corrispondere ai campi presenti nel dataset. Se la query di consegna non restituisce un campo specificato nell'impostazione di un'estensione di consegna o un valore di parametro, il server di report genera un errore quando l'abbonamento viene elaborato.
Il valore del EventType parametro deve corrispondere a un evento configurato per il server di report. I due eventi utilizzati per creare abbonamenti sono TimedSubscription e SnapshotUpdated. Usa il ListEvents metodo per restituire un elenco di tutti gli eventi configurati per il server di report.
Il valore del MatchData parametro dipende dal tipo di evento. Se l'evento è un TimedSubscription evento, è richiesto un ScheduleDefinition oggetto come MatchData parametro. Devi prima serializzare l'oggetto ScheduleDefinition come XML per poterlo passare come valore di stringa e creare un abbonamento basato sul programma. La struttura XML potrebbe assomigliare a quella nel seguente esempio:
<ScheduleDefinition>
<WeeklyRecurrence>
<StartDateTime>2003-02-24T09:00:00-08:00</StartDateTime>
<WeeksInterval>1</WeeksInterval>
<DaysOfWeek>
<Monday>True</Monday>
</DaysOfWeek>
</WeeklyRecurrence>
</ScheduleDefinition>
Il valore dell'elemento StartDateTime quando passato come stringa XML dovrebbe corrispondere al formato di data ISO 8601. Questo standard internazionale di data e ora è il formato esteso CCYY-MM-DDThh:mm:ss+/-Z, dove "CC" rappresenta il secolo, "YY" l'anno, "MM" il mese e "DD" il giorno. La lettera "T" indica il separatore di data e ora e "hh", "mm", "ss" rappresentano rispettivamente ora, minuto e secondo. Questa rappresentazione può essere immediatamente seguita da una "Z" per indicare il Tempo Universale Coordinato (UTC). Per indicare il fuso orario, rappresentato come la differenza tra l'ora locale e il Tempo Universale Coordinato, "Z" è preceduta da un segno "+" o "-", seguito dalla differenza rispetto all'UTC rappresentata come hh:mm.
Se la definizione di schedule per a TimedSubscription è un schedule condiviso, devi passare l'ID schedule del programma condiviso come MatchData parametro. L'ID dell'elenco viene trasmesso come String, ad esempio, "4608ac1b-fc75-4149-9e15-5a8b5781b843". L'ID dell'schedule può essere ottenuto chiamando il ListSchedules metodo.
Puoi usare la XmlSerializer classe per convertire automaticamente la tua classe oggetto in una stringa XML. Per maggiori informazioni sulla XmlSerializer classe, consulta "System.Xml.XmlSerializer Class" nella documentazione del Microsoft .NET Framework.
Se l'evento è un SnapshotUpdated abbonamento, il valore di MatchData dovrebbe essere null (o Nothing in Visual Basic).
Usando questo metodo si stabilisce la LastExecutedSpecified proprietà della sottoscrizione a false, la Status proprietà della sottoscrizione a new subscription, e tutte le proprietà dell'abbonamento Activeoggetto a false. Le ModifiedBy proprietà e ModifiedDate dell'oggetto vengono aggiornate.