Udostępnij za pośrednictwem


Metoda ReportingService2005.CreateDataDrivenSubscription

Tworzy subskrypcja oparta na danych dla określonego raportu.

Przestrzeń nazw:  ReportService2005
Zestaw:  ReportService2005 (w ReportService2005.dll)

Składnia

'Deklaracja
<SoapDocumentMethodAttribute("https://schemas.microsoft.com/sqlserver/2005/06/30/reporting/reportingservices/CreateDataDrivenSubscription", RequestNamespace := "https://schemas.microsoft.com/sqlserver/2005/06/30/reporting/reportingservices",  _
    ResponseNamespace := "https://schemas.microsoft.com/sqlserver/2005/06/30/reporting/reportingservices",  _
    Use := SoapBindingUse.Literal, ParameterStyle := SoapParameterStyle.Wrapped)> _
<SoapHeaderAttribute("BatchHeaderValue")> _
<SoapHeaderAttribute("ServerInfoHeaderValue", Direction := SoapHeaderDirection.Out)> _
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
'Użycie
Dim instance As ReportingService2005
Dim Report As String
Dim ExtensionSettings As ExtensionSettings
Dim DataRetrievalPlan As DataRetrievalPlan
Dim Description As String
Dim EventType As String
Dim MatchData As String
Dim Parameters As ParameterValueOrFieldReference()
Dim returnValue As String

returnValue = instance.CreateDataDrivenSubscription(Report, _
    ExtensionSettings, DataRetrievalPlan, _
    Description, EventType, MatchData, _
    Parameters)
[SoapDocumentMethodAttribute("https://schemas.microsoft.com/sqlserver/2005/06/30/reporting/reportingservices/CreateDataDrivenSubscription", RequestNamespace = "https://schemas.microsoft.com/sqlserver/2005/06/30/reporting/reportingservices", 
    ResponseNamespace = "https://schemas.microsoft.com/sqlserver/2005/06/30/reporting/reportingservices", 
    Use = SoapBindingUse.Literal, ParameterStyle = SoapParameterStyle.Wrapped)]
[SoapHeaderAttribute("BatchHeaderValue")]
[SoapHeaderAttribute("ServerInfoHeaderValue", Direction = SoapHeaderDirection.Out)]
public string CreateDataDrivenSubscription(
    string Report,
    ExtensionSettings ExtensionSettings,
    DataRetrievalPlan DataRetrievalPlan,
    string Description,
    string EventType,
    string MatchData,
    ParameterValueOrFieldReference[] Parameters
)
[SoapDocumentMethodAttribute(L"https://schemas.microsoft.com/sqlserver/2005/06/30/reporting/reportingservices/CreateDataDrivenSubscription", RequestNamespace = L"https://schemas.microsoft.com/sqlserver/2005/06/30/reporting/reportingservices", 
    ResponseNamespace = L"https://schemas.microsoft.com/sqlserver/2005/06/30/reporting/reportingservices", 
    Use = SoapBindingUse::Literal, ParameterStyle = SoapParameterStyle::Wrapped)]
[SoapHeaderAttribute(L"BatchHeaderValue")]
[SoapHeaderAttribute(L"ServerInfoHeaderValue", Direction = SoapHeaderDirection::Out)]
public:
String^ CreateDataDrivenSubscription(
    String^ Report, 
    ExtensionSettings^ ExtensionSettings, 
    DataRetrievalPlan^ DataRetrievalPlan, 
    String^ Description, 
    String^ EventType, 
    String^ MatchData, 
    array<ParameterValueOrFieldReference^>^ Parameters
)
[<SoapDocumentMethodAttribute("https://schemas.microsoft.com/sqlserver/2005/06/30/reporting/reportingservices/CreateDataDrivenSubscription", RequestNamespace = "https://schemas.microsoft.com/sqlserver/2005/06/30/reporting/reportingservices", 
    ResponseNamespace = "https://schemas.microsoft.com/sqlserver/2005/06/30/reporting/reportingservices", 
    Use = SoapBindingUse.Literal, ParameterStyle = SoapParameterStyle.Wrapped)>]
[<SoapHeaderAttribute("BatchHeaderValue")>]
[<SoapHeaderAttribute("ServerInfoHeaderValue", Direction = SoapHeaderDirection.Out)>]
member CreateDataDrivenSubscription : 
        Report:string * 
        ExtensionSettings:ExtensionSettings * 
        DataRetrievalPlan:DataRetrievalPlan * 
        Description:string * 
        EventType:string * 
        MatchData:string * 
        Parameters:ParameterValueOrFieldReference[] -> string 
public function CreateDataDrivenSubscription(
    Report : String, 
    ExtensionSettings : ExtensionSettings, 
    DataRetrievalPlan : DataRetrievalPlan, 
    Description : String, 
    EventType : String, 
    MatchData : String, 
    Parameters : ParameterValueOrFieldReference[]
) : String

Parametry

  • Report
    Typ: System.String
    Pełni kwalifikowany adres URL raportu, który chcesz utworzyć subskrypcja oparta na danych.
  • Description
    Typ: System.String
    Zrozumiały opis jest wyświetlany użytkownikom.
  • EventType
    Typ: System.String
    Typ zdarzenie wyzwalającego subskrypcja oparta na danych.Prawidłowe wartości to TimedSubscription lub SnapshotUpdated.
  • MatchData
    Typ: System.String
    Dane skojarzone z określonym EventType parametru.Ten parametr jest używany przez zdarzenie do dopasowywania subskrypcja oparta na danych ze zdarzeniem jest uruchamiany.

Wartość zwracana

Typ: System.String
A ciąg wartość zawierający identyfikator subskrypcji, który unikatowo identyfikuje subskrypcja oparta na danych w baza danych serwera raportów.

Uwagi

W poniższej tabela przedstawiono informacje nagłówka i uprawnienia na tej operacji.

Nagłówki SOAP

(W)BatchHeaderValue

(Ruch wychodzący)ServerInfoHeaderValue

Wymagane uprawnienia

ExecuteAndView ORAZ CreateAnySubscription

Długość Report parametr nie może przekraczać 260 znaków; w przeciwnym razie SOAP jest wyjątek z kodem błędu rsItemLengthExceeded.

Report Parametr nie może być null lub puste lub zawierać następujących znaków zarezerwowanych: : ? ; @ & = + $ , \ * > < | . ".Ukośnik (/) można używać do oddzielania elementów pełną nazwę ścieżka folderu, ale nie można go użyć na końcu nazwy folderu.

Można użyć GetExtensionSettings metoda, aby pobrać listę wymaganych ustawień rozszerzenie dostarczania.Muszą przejść wartości tych ustawień wymaganych w ExtensionSettings parametru.Aby uzyskać informacje dotyczące ustawień dostarczania poczty e-mail, zobacz Ustawienia rozszerzenia dostarczania usług raportowania.

DataRetrievalPlan Parametrowi DataRetrievalPlan obiektu jako argumentu.DataRetrievalPlan Obiekt zawiera zestawu danych z kwerendy dostawy.CommandType właściwość kwerendy dostawy (QueryDefinition obiektu) jest zestaw do tekstu domyślnie sterowanych danymi subskrypcji i nie musi być określony.Jeżeli określono wartość dla CommandType właściwość, wartość musi być tekstu.

Źródło danych, pod warunkiem że lub odwołania w zestawie danych dla kwerendy dostawy musi mieć CredentialRetrieval Ustawienie Magazyn.

Wartości rozszerzenie dostarczania ustawienia i parametry, zestaw albo wartości statyczne lub odwołania do pole.Jeśli odwołanie do pole określono ustawienie rozszerzenie dostarczania lub parametr, ustawienie lub parametr wartość opartych na danych.Zestaw danych z kwerendą dostawy zawiera zestaw pól (Field obiektów), które są mapowane do rozszerzenie dostarczania ustawienia (ExtensionParameter obiektów) i wartości parametrów raportu (ParameterValue obiektów).Wszystkie pola w rozszerzenie dostarczania ustawienia i wartości parametrów muszą odpowiadać polom w zestawie danych raportu.Jeśli kwerenda dostawy nie zwraca pole, które określono w ustawieniu rozszerzenie dostarczania lub wartość parametru, serwer raportów zgłasza błąd podczas przetwarzania subskrypcja.

Wartość EventType parametru musi odpowiadać zdarzenie, który skonfigurowano dla serwer raportów.Są dwa zdarzenia, które są używane do tworzenia subskrypcji TimedSubscription i SnapshotUpdated.Użyj ListEvents metoda, aby powrócić do listy wszystkich zdarzeń skonfigurowany dla serwer raportów.

Wartość MatchData zależy od parametru typu zdarzenie.Jeśli zdarzenie jest TimedSubscription zdarzenie, ScheduleDefinition obiektu wymagany jest jako MatchData parametru.Musisz najpierw serializować ScheduleDefinition jako XML w celu przekazania go jako wartość ciąg i utworzyć obiekt subskrypcja zależności harmonogramu.Struktura XML może wyglądać tak jak w następującym przykładzie:

<ScheduleDefinition>
   <WeeklyRecurrence>
      <StartDateTime>2003-02-24T09:00:00-08:00</StartDateTime>
      <WeeksInterval>1</WeeksInterval>
      <DaysOfWeek>
         <Monday>True</Monday>
         </DaysOfWeek>
   </WeeklyRecurrence>
</ScheduleDefinition>

Wartość StartDateTime elementu, gdy dane są przekazywane jako ciąg znaków XML powinien odpowiadać format data ISO 8601.Międzynarodowe data i czas standardowy jest rozszerzony format SSRR-MM-DDThh:mm:ss +/-Z którym "DW" reprezentuje stulecia "Rr" rok "MM" miesiąc i "dd" dzień.Litera "T" Data i czas separator i "gg", "mm", "ss" reprezentują godziny, minuty i sekundy, odpowiednio.Reprezentacja ta może być natychmiast następuje "Z" Aby wskazać skoordynowanego czasu uniwersalnego (UTC).Aby wskazać strefę czasową, reprezentowany jako różnicę między czas lokalnym a Coordinated Universal czas "Z" jest poprzedzony przez "+" lub "-" znak, różnica z UTC reprezentowane jako hh: mm.

Jeśli definicja harmonogramu TimedSubscription jest udostępniony harmonogram, musi przekazać identyfikator harmonogramu udostępnionego harmonogramu jako MatchData parametru.Harmonogram jest przekazywany identyfikator, jako ciąg, na przykład "4608ac1b-fc75-4149-9e15-5a8b5781b843".Harmonogram można uzyskać Identyfikatora, wywołując ListSchedules metoda.

Można użyć XmlSerializer klasy automatycznie przekonwertować klasy object na ciąg znaków XML.Więcej informacji o XmlSerializer klasy, zobacz "Klasa System.Xml.XmlSerializer" w programie Microsoft.NET Framework dokumentacji.

Jeśli zdarzenie jest SnapshotUpdated subskrypcja, wartość MatchData powinien być nullodwołanie o wartości null (Nothing w języku Visual Basic) (lub nic nie w języku Visual Basic).

Przy użyciu tej metoda ustawia LastExecuted właściwość subskrypcja do Brak, Status właściwość subskrypcja do nową subskrypcjęoraz Active właściwość subskrypcja do true.ModifiedBy i ModifiedDate Właściwości raportu zostaną również zaktualizowane.

Przykłady

Aby skompilować ten przykład kodu, należy odwołać WSDL usług Reporting i przywozu niektórych obszarów nazw.Aby uzyskać więcej informacji, zobacz temat Compiling and Running Code Examples.Następujący kod w przykładzie wykorzystano CreateDataDrivenSubscription Aby dodać nowy sterowanych danymi subskrypcja w bazie danych raportu:

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