ReportingService2010.CreateDataDrivenSubscription Método

Definición

Crea una suscripción controlada por datos para un elemento especificado. Este método se aplica al tipo de 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

Parámetros

ItemPath
String

Dirección URL completa del elemento para el que se va a crear una suscripción controlada por datos, incluidos el nombre de archivo y, en modo de SharePoint, la extensión.

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 elemento.

Devoluciones

Valor String que contiene un identificador de suscripción que identifica de forma exclusiva la suscripción controlada por datos en la base de datos del servidor de informes o la biblioteca de SharePoint.

Atributos

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 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());  
      }  
   }  
}  

Comentarios

En la siguiente tabla se muestra la información de encabezado y de permisos de esta operación.

Uso de encabezados SOAP (In) TrustedUserHeaderValue

(Out) ServerInfoHeaderValue
Permisos necesarios en modo nativo ExecuteAndView y CreateAnySubscription
Permisos necesarios en modo de SharePoint <xref:Microsoft.SharePoint.SPBasePermissions.ViewListItems> y <xref:Microsoft.SharePoint.SPBasePermissions.ManageAlerts>

La longitud del ItemPath 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 ItemPath 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 false, la Status propiedad de la suscripción en new subscriptiony todas las propiedades del objeto de Activela suscripción en false. Las ModifiedBy propiedades y ModifiedDate del elemento también se actualizan.

Se aplica a