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 una sottoscrizione guidata dai dati per un elemento specificato. Questo metodo si applica al tipo di elemento Report
.
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
URL completo dell'elemento per il quale creare una sottoscrizione guidata dai dati, inclusi il nome file e, in modalità SharePoint, l'estensione.
- ExtensionSettings
- ExtensionSettings
Oggetto ExtensionSettings contenente un elenco di impostazioni specifiche dell'estensione per il recapito.
- DataRetrievalPlan
- DataRetrievalPlan
Oggetto DataRetrievalPlan che specifica le impostazioni necessarie per recuperare dati da una query per il recapito. L'oggetto DataRetrievalPlan contiene un riferimento a un oggetto DataSetDefinition e a un oggetto DataSourceDefinitionOrReference.
- Description
- String
Descrizione significativa visualizzata agli utenti.
- EventType
- String
Tipo di evento che attiva la sottoscrizione guidata dai dati. I valori validi sono TimedSubscription
o SnapshotUpdated
.
- MatchData
- String
Dati associati al parametro specificato EventType
. Tale parametro viene utilizzato da un evento per individuare una corrispondenza tra la sottoscrizione guidata dai dati e un evento generato.
- Parameters
- ParameterValueOrFieldReference[]
Matrice di oggetti ParameterValueOrFieldReference contenente un elenco di parametri per l'elemento.
Restituisce
Valore String
contenente un ID di sottoscrizione che identifica in modo univoco la sottoscrizione guidata dai dati nel database del server di report o nella raccolta di SharePoint.
- Attributi
Esempio
Per compilare questo esempio di codice, è necessario fare riferimento alla Reporting Services WSDL e importare determinati spazi dei nomi. Per altre informazioni, vedere Compilazione ed esecuzione di esempi di codice. Nell'esempio di codice seguente viene CreateDataDrivenSubscription usato per aggiungere una nuova sottoscrizione guidata dai dati al database del server di report:
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
Nella tabella seguente vengono mostrate le informazioni sull'intestazione e sulle autorizzazioni relative a questa operazione.
Utilizzo intestazione SOAP | (In) TrustedUserHeaderValue (Out) ServerInfoHeaderValue |
Autorizzazioni necessarie per la modalità nativa | ExecuteAndView E CreateAnySubscription |
Autorizzazioni necessarie per la modalità SharePoint | <xref:Microsoft.SharePoint.SPBasePermissions.ViewListItems> E <xref:Microsoft.SharePoint.SPBasePermissions.ManageAlerts> |
La lunghezza del ItemPath
parametro non può superare i 260 caratteri. In caso contrario, viene generata un'eccezione SOAP con il codice di errore rsItemLengthExceeded.
Il ItemPath
parametro non può essere null o vuoto o contenere i caratteri riservati seguenti: : ? ; @ & = + $ , \ * > < | . "
. È possibile utilizzare il carattere barra (/) per separare gli elementi nel nome completo del percorso della cartella, ma non è possibile usarlo alla fine del nome della cartella.
È possibile utilizzare il GetExtensionSettings metodo per recuperare un elenco delle impostazioni necessarie per un'estensione per il recapito. È necessario passare i valori per queste impostazioni necessarie nel ExtensionSettings
parametro . Per informazioni sulle impostazioni di recapito tramite posta elettronica, vedere Reporting Services Impostazioni dell'estensione per il recapito.
Il DataRetrievalPlan
parametro accetta un DataRetrievalPlan oggetto come argomento. L'oggetto DataRetrievalPlan contiene un set di dati con una query di recapito. La CommandType proprietà della query di recapito (QueryDefinition oggetto) è impostata su Text
per impostazione predefinita per le sottoscrizioni guidate dai dati e non deve essere specificata. Se si specifica un valore per la CommandType proprietà, il valore deve essere Text
.
L'origine dati fornita o a cui si fa riferimento nel set di dati per la query di recapito deve avere un'impostazione CredentialRetrieval di Store
.
I valori per le impostazioni e i parametri dell'estensione per il recapito possono essere impostati su valori statici o su riferimenti ai campi. Quando viene specificato un riferimento al campo per l'impostazione dell'estensione per il recapito o un parametro, il valore dell'impostazione o del parametro è basato sui dati. Il set di dati con la query di recapito include un set di campi (Field oggetti) mappati alle impostazioni dell'estensione per il recapito (ExtensionParameter oggetti) e ai valori dei parametri del report (ParameterValue oggetti ). Tutti i campi a cui si fa riferimento nelle impostazioni dell'estensione per il recapito e i valori dei parametri del report devono corrispondere ai campi nel set di dati. Se la query di recapito non restituisce un campo specificato in un'impostazione dell'estensione per il recapito o un valore di parametro, il server di report genera un errore durante l'elaborazione della sottoscrizione.
Il valore del EventType
parametro deve corrispondere a un evento configurato per il server di report. I due eventi usati per creare sottoscrizioni sono TimedSubscription
e SnapshotUpdated
. Utilizzare 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, è necessario un ScheduleDefinition oggetto come MatchData
parametro . È necessario prima serializzare l'oggetto ScheduleDefinition come XML per passarlo come valore stringa e creare una sottoscrizione in base alla pianificazione. La struttura XML potrebbe essere simile a quella nell'esempio seguente:
<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 deve corrispondere al formato di data ISO 8601. Questo standard di data e ora internazionale è il formato esteso CCYY-MM-DDThh:mm:ss+/-Z dove "CC" rappresenta il secolo, "AA" l'anno, "MM" il mese e "DD" il giorno. La lettera "T" è 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 l'ora UTC (Coordinated Universal Time). Per indicare il fuso orario, rappresentato come differenza tra l'ora locale e l'ora universale coordinata, "Z" è preceduto da un segno "+" o "-", seguito dalla differenza rispetto all'ora UTC rappresentata come hh:mm.
Se la definizione di pianificazione per un TimedSubscription
oggetto è una pianificazione condivisa, è necessario passare l'ID pianificazione della pianificazione condivisa come MatchData
parametro . L'ID pianificazione viene passato come String
, ad esempio , "4608ac1b-fc75-4149-9e15-5a8b5781b843". L'ID pianificazione può essere ottenuto chiamando il ListSchedules metodo .
È possibile utilizzare la classe per convertire automaticamente la XmlSerializer
classe oggetto in una stringa XML. Per altre informazioni sulla XmlSerializer
classe , vedere "System.Xml. Classe XmlSerializer" nella documentazione di Microsoft .NET Framework.
Se l'evento è una SnapshotUpdated
sottoscrizione, il valore di MatchData
deve essere null
(o Nothing
in Visual Basic).
L'utilizzo di questo metodo imposta la LastExecutedSpecified proprietà della sottoscrizione su false
, la Status proprietà della sottoscrizione su new subscription
e tutte le proprietà dell'oggetto della Activesottoscrizione su false
. Vengono aggiornate anche le ModifiedBy proprietà e ModifiedDate dell'elemento.