ReportingService2005.CreateDataDrivenSubscription メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
指定したレポートのデータ ドリブン サブスクリプションを作成します。
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
パラメーター
- Report
- String
データ ドリブン サブスクリプションを作成するレポートの完全修飾 URL です。
- ExtensionSettings
- ExtensionSettings
配信拡張機能固有の設定の一覧を格納した ExtensionSettings オブジェクトです。
- DataRetrievalPlan
- DataRetrievalPlan
配信クエリからデータを取得するために必要な設定を提供する DataRetrievalPlan オブジェクトです。 DataRetrievalPlan オブジェクトには、DataSetDefinition オブジェクトと DataSourceDefinitionOrReference オブジェクトへの参照が含まれます。
- Description
- String
ユーザーに対して表示される説明文です。
- EventType
- String
データ ドリブン サブスクリプションをトリガーするイベントの種類です。 有効な値は または TimedSubscription
SnapshotUpdated
です。
- MatchData
- String
指定した EventType
パラメーターに関連付けられているデータ。 このパラメーターは、データ ドリブン サブスクリプションと発生したイベントの照合のために、イベントで使用されます。
- Parameters
- ParameterValueOrFieldReference[]
レポートのパラメーターの一覧を表す ParameterValueOrFieldReference オブジェクトの配列です。
戻り値
レポート サーバー データベース内のデータ ドリブン サブスクリプションを一意に識別するサブスクリプション ID を表す String
値です。
例
このコード例をコンパイルするには、Reporting Services の WSDL を参照し、特定の名前空間をインポートする必要があります。 詳細については、「 コード例のコンパイルと実行」を参照してください。 次のコード例では、CreateDataDrivenSubscription を使用して新しいデータ ドリブン サブスクリプションをレポート サーバー データベースに追加します。
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());
}
}
}
注釈
次の表に、この操作に関連するヘッダーおよび権限の情報を示します。
SOAP ヘッダー | (In) BatchHeaderValue (Out) ServerInfoHeaderValue |
必要なアクセス許可 | ExecuteAndView および CreateAnySubscription |
パラメーターの Report
長さは 260 文字を超えることはできません。それ以外の場合は、エラー コード rsItemLengthExceeded で SOAP 例外がスローされます。
Report
パラメーターを NULL または空の文字列にすることはできません。また、予約文字 : ? ; @ & = + $ , \ * > < | . "
を含めることもできません。 スラッシュ文字 (/) を使用して、フォルダーの完全なパス名内の項目を区切ることができますが、フォルダー名の末尾で使用することはできません。
GetExtensionSettings メソッドを使用して、配信拡張機能に必須の設定の一覧を取得することができます。 これらの必須の設定の値は、ExtensionSettings
パラメーターで渡す必要があります。 電子メール配信設定の詳細については、「Reporting Services配信拡張機能の設定」を参照してください。
DataRetrievalPlan
パラメーターは、引数として DataRetrievalPlan オブジェクトを使用します。 DataRetrievalPlan オブジェクトには、配信クエリを使用したデータセットが含まれます。 データ ドリブン サブスクリプションでは、配信クエリ (CommandType オブジェクト) の QueryDefinition プロパティに既定で Text
が設定されるため、特に指定する必要はありません。 CommandType プロパティの値を指定する場合は、値を Text
とする必要があります。
配信クエリのデータセットで提供または参照されているデータ ソースでは、CredentialRetrieval の設定を Store
とする必要があります。
配信拡張機能の設定値とパラメーターの値は、静的な値かフィールド参照のどちらかに設定できます。 配信拡張機能の設定またはパラメーターでフィールド参照を指定すると、その設定またはパラメーターの値はデータ ドリブンになります。 配信クエリを使用したデータセットには、配信拡張機能設定 (Field オブジェクト) やレポート パラメーター値 (ExtensionParameter オブジェクト) にマップされる一連のフィールド (ParameterValue オブジェクト) があります。 配信拡張機能の設定やレポート パラメーター値で参照されるすべてのフィールドは、データセットのフィールドに対応する必要があります。 配信クエリが、配信拡張機能の設定またはパラメーター値で指定したフィールドを返さない場合は、サブスクリプションの処理時にレポート サーバーでエラーが発生します。
EventType
パラメーターの値は、レポート サーバー用に構成されたイベントに対応する必要があります。 サブスクリプションの作成に使用されるイベントは、TimedSubscription
と SnapshotUpdated
の 2 つです。 レポート サーバー用に構成されたすべてのイベントの一覧を返すには、ListEvents メソッドを使用します。
MatchData
パラメーターの値は、イベントの種類によって異なります。 イベントが TimedSubscription
イベントである場合は、MatchData
パラメーターとして ScheduleDefinition オブジェクトが必要です。 ScheduleDefinition オブジェクトを文字列値として渡し、スケジュールに基づくサブスクリプションを作成するには、まずこのオブジェクトを XML としてシリアル化する必要があります。 XML 構造は、次の例のようになります。
<ScheduleDefinition>
<WeeklyRecurrence>
<StartDateTime>2003-02-24T09:00:00-08:00</StartDateTime>
<WeeksInterval>1</WeeksInterval>
<DaysOfWeek>
<Monday>True</Monday>
</DaysOfWeek>
</WeeklyRecurrence>
</ScheduleDefinition>
StartDateTime 要素を XML 文字列として渡すときの値は、ISO 8601 の日付形式に対応する必要があります。 この国際日時標準は拡張形式 CCYY-MM-DDThh:mm:ss+/-Z となっており、"CCYY" が年、"MM" が月、"DD" が日を表します。 文字 "T" は日付と時刻の区切り記号で、"hh"、"mm"、"ss" はそれぞれ時間、分、秒を表します。 協定世界時 (UTC) を表す場合には、すぐ後ろに "Z" を付けます。 ローカル時刻と協定世界時の差でタイム ゾーンを示すには、"Z" の前に "+"記号か "-" 記号を付け、"Z" の後ろに UTC との差を hh:mm の形式で表します。
TimedSubscription
のスケジュール定義が共有スケジュールである場合、共有スケジュールの ID を MatchData
パラメーターとして渡す必要があります。 スケジュール ID は、"4608ac1b-fc75-4149-9e15-5a8b5781b843" のように、String
として渡されます。 スケジュール ID は、ListSchedules メソッドを呼び出すことにより取得されます。
XmlSerializer
クラスを使用して、オブジェクト クラスを XML 文字列に自動的に変換できます。 XmlSerializer
クラスの詳細については、Microsoft .NET Framework のドキュメントの「System.Xml.XmlSerializer クラス」を参照してください。
イベントが SnapshotUpdated
サブスクリプションである場合、MatchData
の値は null
(Visual Basic では Nothing
) である必要があります。
このメソッドを使用すると、 LastExecutedSpecified サブスクリプションの プロパティを に none
設定し、 Status サブスクリプションのプロパティを に new subscription
設定し、サブスクリプション Active の オブジェクトのすべてのプロパティを に false
設定します。 また、レポートの ModifiedBy プロパティと ModifiedDate プロパティも更新されます。