ReportingService2005.CreateDataDrivenSubscription Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Crée un abonnement piloté par les données pour un rapport spécifié.
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
Paramètres
- Report
- String
URL complète du rapport pour lequel l'abonnement piloté par les données doit être créé.
- ExtensionSettings
- ExtensionSettings
Objet ExtensionSettings qui contient une liste de paramètres spécifiques à l'extension de remise.
- DataRetrievalPlan
- DataRetrievalPlan
Objet DataRetrievalPlan qui fournit des paramètres obligatoires pour récupérer des données de la requête de remise. L'objet DataRetrievalPlan contient une référence à un objet DataSetDefinition et à un objet DataSourceDefinitionOrReference.
- Description
- String
Description explicite affichée pour les utilisateurs.
- EventType
- String
Type d'événement qui a déclenché l'abonnement piloté par les données. Les valeurs valides sont TimedSubscription
ou SnapshotUpdated
.
- MatchData
- String
Données associées au paramètre spécifié EventType
. Ce paramètre est utilisé par un événement pour faire correspondre l'abonnement piloté par les données avec un événement qui s'est déclenché.
- Parameters
- ParameterValueOrFieldReference[]
Tableau d'objets ParameterValueOrFieldReference qui contient une liste de paramètres pour le rapport.
Retours
Valeur de type String
contenant un ID d'abonnement qui identifie de façon unique l'abonnement piloté par les données dans la base de données du serveur de rapports.
Exemples
Pour compiler cet exemple de code, vous devez référencer le Reporting Services WSDL et importer certains espaces de noms. Pour plus d’informations, consultez Compilation et exécution d’exemples de code. L’exemple de code suivant utilise CreateDataDrivenSubscription pour ajouter un nouvel abonnement piloté par les données à la base de données du serveur de rapports :
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());
}
}
}
Remarques
Le tableau suivant présente les informations relatives aux en-têtes et aux autorisations sur cette opération.
En-têtes SOAP | (In) BatchHeaderValue (Out) ServerInfoHeaderValue |
Autorisations requises | ExecuteAndView AND CreateAnySubscription |
La longueur du Report
paramètre ne peut pas dépasser 260 caractères ; sinon, une exception SOAP est levée avec le code d’erreur rsItemLengthExceeded.
Le Report
paramètre ne peut pas être null ou vide ou contenir les caractères réservés suivants : : ? ; @ & = + $ , \ * > < | . "
. Vous pouvez utiliser la barre oblique (/) pour séparer les éléments dans le nom complet du chemin d’accès du dossier, mais vous ne pouvez pas l’utiliser à la fin du nom du dossier.
Vous pouvez utiliser la GetExtensionSettings méthode pour récupérer une liste des paramètres requis pour une extension de remise. Vous devez passer des valeurs pour ces paramètres requis dans le ExtensionSettings
paramètre . Pour plus d’informations sur les paramètres de remise par courrier électronique, consultez Reporting Services Paramètres d’extension de remise.
Le DataRetrievalPlan
paramètre prend un DataRetrievalPlan objet comme argument. L’objet DataRetrievalPlan contient un jeu de données avec une requête de remise. La CommandType propriété de la requête de remise (QueryDefinition objet) est définie Text
sur par défaut pour les abonnements pilotés par les données et n’a pas besoin d’être spécifiée. Si vous spécifiez une valeur pour la CommandType propriété , la valeur doit être Text
.
La source de données fournie ou référencée dans le jeu de données pour la requête de remise doit avoir un CredentialRetrieval paramètre de Store
.
Les valeurs des paramètres et des paramètres d’extension de remise peuvent être définies sur des valeurs statiques ou sur des références de champ. Lorsqu’une référence de champ est spécifiée pour un paramètre d’extension de remise ou un paramètre, la valeur du paramètre ou du paramètre est pilotée par les données. Le jeu de données avec la requête de remise a un ensemble de champs (Field objets) qui sont mappés aux paramètres d’extension de remise (ExtensionParameter objets) et aux valeurs de paramètres de rapport (ParameterValue objets ). Tous les champs référencés dans les paramètres d’extension de remise et les valeurs de paramètres de rapport doivent correspondre aux champs du jeu de données. Si la requête de remise ne retourne pas un champ spécifié dans un paramètre d’extension de remise ou une valeur de paramètre, le serveur de rapports génère une erreur lors du traitement de l’abonnement.
La valeur du EventType
paramètre doit correspondre à un événement configuré pour le serveur de rapports. Les deux événements utilisés pour créer des abonnements sont TimedSubscription
et SnapshotUpdated
. Utilisez la ListEvents méthode pour renvoyer une liste de tous les événements configurés pour le serveur de rapports.
La valeur du paramètre dépend du MatchData
type d’événement. Si l’événement est un TimedSubscription
événement, un ScheduleDefinition objet est requis en tant que MatchData
paramètre . Vous devez d’abord sérialiser l’objet ScheduleDefinition au format XML pour le passer en tant que valeur de chaîne et créer un abonnement en fonction de la planification. La structure XML peut ressembler à celle de l’exemple suivant :
<ScheduleDefinition>
<WeeklyRecurrence>
<StartDateTime>2003-02-24T09:00:00-08:00</StartDateTime>
<WeeksInterval>1</WeeksInterval>
<DaysOfWeek>
<Monday>True</Monday>
</DaysOfWeek>
</WeeklyRecurrence>
</ScheduleDefinition>
La valeur de l’élément lorsqu’il StartDateTime est passé en tant que chaîne XML doit correspondre au format de date ISO 8601. Cette norme internationale de date et d’heure est au format étendu CCYY-MM-DDThh:mm:ss+/-Z où « CC » représente le siècle, « YY » l’année, « MM » le mois et « DD » le jour. La lettre « T » est le séparateur de date et d’heure et « hh », « mm », « ss » représentent respectivement l’heure, la minute et la seconde. Cette représentation peut être immédiatement suivie d’un « Z » pour indiquer le temps universel coordonné (UTC). Pour indiquer le fuseau horaire, représenté comme la différence entre l’heure locale et l’heure universelle coordonnée, « Z » est précédé d’un signe « + » ou « - », suivi de la différence utc représentée par hh:mm.
Si la définition de planification d’un TimedSubscription
est une planification partagée, vous devez passer l’ID de planification de la planification partagée en tant que MatchData
paramètre. L’ID de planification est passé en tant que String
, par exemple, « 4608ac1b-fc75-4149-9e15-5a8b5781b843 ». L’ID de planification peut être obtenu en appelant la ListSchedules méthode .
Vous pouvez utiliser la XmlSerializer
classe pour convertir automatiquement votre classe d’objet en chaîne XML. Pour plus d’informations sur la XmlSerializer
classe , consultez « System.Xml. XmlSerializer, classe » dans la documentation microsoft .NET Framework.
Si l’événement est un SnapshotUpdated
abonnement, la valeur de MatchData
doit être null
(ou Nothing
en Visual Basic).
À l’aide de cette méthode, la LastExecutedSpecified propriété de l’abonnement none
est définie sur , la Status propriété de l’abonnement sur new subscription
et toutes les propriétés de l’objet de l’abonnement Active sur false
. Les ModifiedBy propriétés et ModifiedDate du rapport sont également mises à jour.