ReportingService2005.CreateDataDrivenSubscription Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Crea una suscripción controlada por datos para un informe especificado.
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
Parámetros
- Report
- String
Dirección URL completa del informe para el que se va a crear una suscripción controlada por datos.
- ExtensionSettings
- ExtensionSettings
Objeto ExtensionSettings que contiene una lista de opciones de configuración que es específica de la extensión de entrega.
- DataRetrievalPlan
- DataRetrievalPlan
Objeto DataRetrievalPlan que proporciona la configuración que se exige para recuperar los datos de una consulta de entrega. El objeto DataRetrievalPlan contiene una referencia a un objeto DataSetDefinition y un objeto DataSourceDefinitionOrReference.
- Description
- String
Descripción significativa que se muestra a los usuarios.
- EventType
- String
Tipo de evento que desencadena la suscripción controlada por datos. Los valores válidos son TimedSubscription
o SnapshotUpdated
.
- MatchData
- String
Datos asociados al parámetro especificado EventType
. Un evento utiliza este parámetro para hacer coincidir la suscripción controlada por datos con un evento que ha desencadenado.
- Parameters
- ParameterValueOrFieldReference[]
Matriz de objetos ParameterValueOrFieldReference que contiene una lista de parámetros para el informe.
Devoluciones
Valor String
que contiene el identificador de una suscripción que identifica de forma única la suscripción controlada por datos en la base de datos del servidor de informes.
Ejemplos
Para compilar este ejemplo de código, debe hacer referencia al Reporting Services WSDL e importar determinados espacios de nombres. Para obtener más información, vea Compilar y ejecutar ejemplos de código. En el ejemplo de código siguiente se usa CreateDataDrivenSubscription para agregar una nueva suscripción controlada por datos a la base de datos del servidor de informes:
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());
}
}
}
Comentarios
En la siguiente tabla se muestra la información de encabezado y de permisos de esta operación.
Encabezados SOAP | (In) BatchHeaderValue (Out) ServerInfoHeaderValue |
Permisos necesarios | ExecuteAndView y CreateAnySubscription |
La longitud del Report
parámetro no puede superar los 260 caracteres; de lo contrario, se produce una excepción SOAP con el código de error rsItemLengthExceededed.
El Report
parámetro no puede ser nulo ni estar vacío ni contener los siguientes caracteres reservados: : ? ; @ & = + $ , \ * > < | . "
. Puede usar el carácter de barra diagonal (/) para separar los elementos del nombre de ruta de acceso completo de la carpeta, pero no puede usarlo al final del nombre de la carpeta.
Puede usar el GetExtensionSettings método para recuperar una lista de la configuración necesaria para una extensión de entrega. Debe pasar valores para estos valores necesarios en el ExtensionSettings
parámetro . Para obtener información sobre la configuración de entrega de correo electrónico, vea Reporting Services Configuración de la extensión de entrega.
El DataRetrievalPlan
parámetro toma un DataRetrievalPlan objeto como argumento. El DataRetrievalPlan objeto contiene un conjunto de datos con una consulta de entrega. La CommandType propiedad de la consulta de entrega (QueryDefinition objeto) se establece Text
en de forma predeterminada para las suscripciones controladas por datos y no tiene que especificarse. Si especifica un valor para la CommandType propiedad , el valor debe ser Text
.
El origen de datos proporcionado o al que se hace referencia en el conjunto de datos para la consulta de entrega debe tener una CredentialRetrieval configuración de Store
.
Los valores para la configuración y los parámetros de la extensión de entrega se pueden establecer en valores estáticos o en referencias de campo. Cuando se especifica una referencia de campo para la configuración de la extensión de entrega o un parámetro, el valor de la configuración o el parámetro está controlado por datos. El conjunto de datos con la consulta de entrega tiene un conjunto de campos (Field objetos) que se asignan a la configuración de la extensión de entrega (ExtensionParameter objetos) y los valores de parámetros de informe (ParameterValue objetos). Todos los campos a los que se hace referencia en la configuración de la extensión de entrega y los valores de los parámetros de informe deben corresponder a los campos del conjunto de datos. Si la consulta de entrega no devuelve un campo especificado en una configuración de extensión de entrega o un valor de parámetro, el servidor de informes genera un error cuando se procesa la suscripción.
El valor del EventType
parámetro debe corresponder a un evento configurado para el servidor de informes. Los dos eventos que se usan para crear suscripciones son TimedSubscription
y SnapshotUpdated
. Use el ListEvents método para devolver una lista de todos los eventos configurados para el servidor de informes.
El valor del MatchData
parámetro depende del tipo de evento. Si el evento es un TimedSubscription
evento, se requiere un ScheduleDefinition objeto como MatchData
parámetro . Primero debe serializar el ScheduleDefinition objeto como XML para pasarlo como un valor de cadena y crear una suscripción basada en la programación. La estructura XML podría ser similar a la del ejemplo siguiente:
<ScheduleDefinition>
<WeeklyRecurrence>
<StartDateTime>2003-02-24T09:00:00-08:00</StartDateTime>
<WeeksInterval>1</WeeksInterval>
<DaysOfWeek>
<Monday>True</Monday>
</DaysOfWeek>
</WeeklyRecurrence>
</ScheduleDefinition>
El valor del StartDateTime elemento cuando se pasa como una cadena XML debe corresponder al formato de fecha ISO 8601. Este estándar de fecha y hora internacional es el formato extendido CCYY-MM-DDThh:mm:ss+/-Z donde "CC" representa el siglo, "AAAa" el año, "MM" el mes y "DD" el día. La letra "T" es el separador de fecha y hora y "hh", "mm", "ss" representan hora, minuto y segundo, respectivamente. Esta representación puede ir seguida inmediatamente de una "Z" para indicar la hora universal coordinada (UTC). Para indicar la zona horaria, representada como la diferencia entre la hora local y la hora universal coordinada, "Z" está precedida por un signo "+" o "-", seguido de la diferencia de UTC representada como hh:mm.
Si la definición de programación de un TimedSubscription
es una programación compartida, debe pasar el identificador de programación de la programación compartida como parámetro MatchData
. El identificador de programación se pasa como String
, por ejemplo, "4608ac1b-fc75-4149-9e15-5a8b5781b843". El identificador de programación se puede obtener llamando al ListSchedules método .
Puede usar la clase para convertir la XmlSerializer
clase de objeto en una cadena XML automáticamente. Para obtener más información sobre la XmlSerializer
clase , vea "System.Xml. Clase XmlSerializer" en la documentación de Microsoft .NET Framework.
Si el evento es una SnapshotUpdated
suscripción, el valor de MatchData
debe ser null
(o Nothing
en Visual Basic).
Con este método se establece la LastExecutedSpecified propiedad de la suscripción en none
, la Status propiedad de la suscripción en new subscription
y todas las propiedades del objeto de Active la suscripción en false
. Las ModifiedBy propiedades y ModifiedDate del informe también se actualizan.