SSRSDocumentSource for WinForms - ComponentOne

SSRSDocumentSource for
WinForms
2016.01.20 更新
グレープシティ株式会社
SSRSDocumentSource for WinForms
目次
はじめに
コンポーネントをプロジェクトに組み込む方法
コンポーネントのランタイムファイル
クイックスタート
2-3
3
4-6
資格情報をコードで設定する
7
SSRSドキュメントの場所をコードで設定する
8
ドキュメントの状態およびページ数を表示する
コントロールの主なプロパティとメソッド
主なメソッド
主なプロパティ
1
2
9-10
11
11
11-12
Copyright © GrapeCity inc. All rights reserved. SSRSDocumentSource for WinForms
はじめに
SSRSDocumentSource for WinFormsを使用すると、ページ区切り付き SSRS レポートを生成し、C1PrintPreviewControl
にロードして、Adobe PDF、Microsoft Word、Excel などのさまざまな形式に表示およびエクスポートできます。
コンポーネントをプロジェクトに組み込む方法
コンポーネントの組み込み
Visual Studio では、ツールボックスにコンポーネントを追加しただけでは、プロジェクトにコンポーネントを追加したことにはなり
ません。プロジェクトの参照設定へ追加された時点でコンポーネントが組み込まれます。
以下のいずれかの操作を行うとプロジェクトへコンポーネントが組み込まれます。
1. フォームにコンポーネントを配置する
2. ソリューションエクスプローラ上で参照の追加を行う
プロジェクトに組み込まれているコンポーネントの一覧は、ソリューションエクスプローラで確認できます。また、各コンポーネント
が使用している DLL もソリューションエクスプローラに登録される場合があります。詳細については、Visual Studio の製品ヘル
プを参照してください。
本製品で使用しているコンポーネントの一覧を以下に示します。
ファイル
内容
C1.Win.4.dll
本体アセンブリ
C1.Win.Document.4.dll
本体アセンブリ
C1.Win.C1Ssrs.4.dll
本体アセンブリ
C1.Win.C1Document.4.Design.dll
デザイナアセンブリ
フォームにコンポーネントを配置する方法
以下に、C1SSRSDcoumentSource コントロールをツールボックスに追加し、フォームに配置する方法を示します。これにより、
コンポーネントがプロジェクトに組み込まれます。
配置手順
1. [ツール]メニューから[ツールボックス アイテムの選択]を選択します。
2. [ツールボックス アイテムの選択]ダイアログの「.NET Framework コンポーネント」タブを選択します。
3. 使用するコンポーネントのチェックボックスを ON にして〈OK〉ボタンをクリックしてください。ツールボックスに指定したコン
トロールのアイコンが表示されます。
2
Copyright © GrapeCity inc. All rights reserved. SSRSDocumentSource for WinForms
4. ツールボックスから指定したコントロールのアイコンを選択してフォームに配置します。ソリューションエクスプローラの参
照設定に指定したコントロールの名前空間が追加されます。
コンポーネントのランタイムファイル
SSRSDocumentSource for WinForms のランタイムファイルは、 C:\Program Files\ComponentOne\Studio for
WinForms\bin\ フォルダにインストールされる次のファイルです。
ファイル名
説明
C1.Win.4.dll
本体アセンブリ
C1.Win.C1Document.4.dll
本体アセンブリ
C1.Win.C1Ssrs.4.dll
本体アセンブリ
注意:
注意:本製品に含まれているファイルのうち、上記以外のファイルは配布できません。
3
Copyright © GrapeCity inc. All rights reserved. SSRSDocumentSource for WinForms
クイックスタート
SsrsDocumentSource を使用すると、表示される SSRS レポートの場所または名前を指定できます。さら
に、C1PrintPreviewControl からページ区切り付き SSRS レポートを表示できます。
これは、フォームに追加できるビジュアルコンポーネントではありませんが、コンポーネントトレイには表示されます。
メモ
メモ:このトピックを開始するには、あらかじめ SSRS レポートサーバーへのアクセス権を確保し、そのサーバーに1つ以
上のレポートが存在する必要があります。
C1PrintPreviewControl を使用して SSRS レポートをプレビューまたはエクスポートするには、.NET Framework 4.0 以上を
使用して新しい WinForms アプリケーションを作成し、次の手順を実行します。
デザイナの場合
1. ツールボックスから、C1SSRSDocumentSource コンポーネントをフォームに追加します。 コンポーネントがコンポーネ
ントトレイに表示されます。
ツールボックスでこのコンポーネントが見つからない場合は、右クリックし、[アイテムの選択]
[アイテムの選択]を選択しま
す。[ツールボックスアイテムの選択]
[ツールボックスアイテムの選択]ダイアログボックスが表示されます。C1.Win.C1Document.dll でコン
ポーネントを見つけ、ツールボックスに追加します。
2. C1PrintPreviewControl をフォームに追加し、必要に応じてその高さと幅を設定します。
ツールボックスでこのコンポーネントが見つからない場合は、右クリックし、[アイテムの選択]
[アイテムの選択]を選択しま
す。[ツールボックスアイテムの選択]
[ツールボックスアイテムの選択]ダイアログボックスが表示されます。C1.Win.C1Report.dllでコンポーネン
トを見つけ、ツールボックスに追加します。
3. C1PrintPreviewControl を右クリックして使用し、[プロパティ]
[プロパティ]を選択して[プロパティ]ウィンドウを開きます。
4. SsrsPaginated プロパティを「True」に設定してページ区切り付きレポートを表示できます。このプロパティのデフォルト
値は「False」です。
5. C1SSRSDocumentSource コンポーネントをクリックし、スマートタグをクリックして[[C1SSRSDocumentSource のタス
ク]
ク]メニューを開きます。
6. C1PrintPreviewControl の横にあるチェックボックスをオンにします。これにより、C1SSRSDocumentSource コンポー
ネントが C1PrintPreviewControl の Document プロパティに割り当てられます。
7. C1SSRSDocumentSource を右クリックし、[プロパティ]
[プロパティ]を選択して[プロパティ]ウィンドウを開きます。
8. DocumentLocation プロパティの横にあるドロップダウン矢印をクリックします。
9. 次のダイアログで、SSRS サーバーのアドレスとレポートの完全パスを指定し、[[OK]]をクリックします。
10. ConnectionOptions プロパティグループを展開します。
11. Credential プロパティの横にあるドロップダウン矢印をクリックします。
12. 次のダイアログで、ユーザー名、パスワード、およびドメインを指定し、[[OK]]をクリックします。
4
Copyright © GrapeCity inc. All rights reserved. SSRSDocumentSource for WinForms
メモ
メモ:次の DLL がプロジェクト参照に追加されていることを確認します。
C1.Win.C1Document.dll
C1.Win.dll
C1.Win.C1Ssrs.dll
C1.Win.C1Report.dll
C1.C1Report.dll
C1.C1Zip.dll
コードでも、ドキュメントの場所とネットワークの資格情報を設定できます。詳細については、「コードでの DocumentLocation
の設定」と「コードでの Credentials の設定」を参照してください。
ここまでの成果
指定された SSRS レポートがプレビューコントロールに表示されるかどうかを決定するパラメータを設定するように求められる
場合があります。
5
Copyright © GrapeCity inc. All rights reserved. SSRSDocumentSource for WinForms
レポートは、サポートされたさまざまな外部形式にエクスポートできます。
6
Copyright © GrapeCity inc. All rights reserved. SSRSDocumentSource for WinForms
資格情報をコードで設定する
SSRS レポートには、ユーザー名とパスワードを指定してアクセスできます。そのために、C1SSRSDocumentSource
の SecurityError イベントで、Credential プロパティを設定します。SSRS サーバーへのアクセスで、資格情報に不備があれ
ば拒否されてこのイベントが発生します。その場合は、必要な資格情報を指定して操作をやり直すことができます。
デザイナの場合
1. C1SSRSDocumentSource の[イベント]
[イベント]ウィンドウを開きます。
2. SecurityError イベントをダブルクリックします。コードでは、そのイベント用に空のハンドラが作成されます。
コードの場合
1. コードビューで、c1SSRSDocumentSource1_SecurityError イベントハンドラを以下に示すように変更します。
Visual Basic コードの書き方
VB
Private Sub C1SSRSDocumentSource1_SecurityError(sender As Object, e As
C1.Win.C1Document.SecurityErrorEventArgs) Handles
C1SSRSDocumentSource1.SecurityError
Dim ds = DirectCast(sender, C1.Win.C1Document.C1SSRSDocumentSource)
ds.Credential = New System.Net.NetworkCredential("myUserId",
"myPassword")
e.Retry = True
End Sub
C# コードの書き方
C#
private void c1SSRSDocumentSource1_SecurityError(object sender,
C1.Win.C1Document.SecurityErrorEventArgs e)
{
var ds = (C1.Win.C1Document.C1SSRSDocumentSource)sender;
ds.Credential = new System.Net.NetworkCredential("myUserId", "myPassword");
e.Retry = true;
}
上のコードでは、"myUserId" と "myPassword" を SSRS レポートサーバーの有効な資格情報に置き換えます。フォー
ムをロードするとき、C1SSRSDocumentSource コンポーネントは、指定されたレポートにアクセスしようとします。
メモ
メモ:不正な資格情報を使用すると、セキュリティエラーがスローされます。その場合は、有効な情報資格を備え
たハンドラを指定して、操作をやり直す必要があります。
2. アプリケーションを実行します。
7
Copyright © GrapeCity inc. All rights reserved. SSRSDocumentSource for WinForms
SSRSドキュメントの場所をコードで設定する
ドキュメントの場所をコードで設定する
Form_Load イベントに使用されているコードで SSRS ドキュメントの場所を設定できます。デザイナを使用してドキュメントの場
所を設定する方法については、「SSRSDocumentSource クイックスタート」を参照してください。
コードの場合
Visual Basic コードの書き方
VB
c1SSRSDocumentSource1.DocumentLocation = New
C1.Win.C1Document.SSRSReportLocation("http://ssrs.abc.com/ReportServer", "/Adventure
Works/Sales")
C# コードの書き方
C#
c1SSRSDocumentSource1.DocumentLocation = new
C1.Win.C1Document.SSRSReportLocation("http://ssrs.abc.com/ReportServer", "/Adventure
Works/Sales");
8
Copyright © GrapeCity inc. All rights reserved. SSRSDocumentSource for WinForms
ドキュメントの状態およびページ数を表示する
このトピックでは、C1SsrsDocumentSource コンポーネントの PageCount プロパティと State プロパティを使用して、ドキュメン
トソースの状態および生成されたページ数を表示する方法について説明します。クイックスタートに示すアプリケーションを作
成し、次の手順を実行します。
デザイナの場合
1.
2.
3.
4.
5.
2つのラベルをフォームに配置します。
最初のラベルの Name を tbReport に設定します。
2番目のラベルの Name を tbState に設定します。
最初のラベルの Text プロパティを Report: None に設定します。このラベルには、レポートの場所が表示されます。
2番目のラベルの Text プロパティを State: Unknown に設定します。このラベルには、レポートの状態と生成される
ページ数が表示されます。
コードの場合
次のコードを Form_Load イベントに追加すると、レポートの場所、状態、およびページ数をラベルに取り込むことができます。
Visual Basic コードの書き方
VB
Dim rl As C1.Win.C1Document.SSRSReportLocation =
TryCast(C1SSRSDocumentSource1.DocumentLocation, SSRSReportLocation)
If rl IsNot Nothing Then
tbReport.Text = C1.Win.C1Ssrs.ReportSession.Combine(rl.ReportServer,
rl.ReportPath)
Else
tbReport.Text = "None"
End If
Select Case C1SSRSDocumentSource1.BusyState
Case C1DocumentSourceBusyState.Exporting, C1DocumentSourceBusyState.Generating,
C1DocumentSourceBusyState.Ready, C1DocumentSourceBusyState.Printing
tbState.Text = String.Format("{0}, Pages: {1}",
C1SSRSDocumentSource1.BusyState, C1SSRSDocumentSource1.PageCount)
Exit Select
Case Else
tbState.Text = C1SSRSDocumentSource1.BusyState.ToString()
Exit Select
End Select
C# コードの書き方
C#
SSRSReportLocation rl = c1SSRSDocumentSource1.DocumentLocation as SSRSReportLocation;
if (rl != null)
tbReport.Text = C1.Win.C1Ssrs.ReportSession.Combine(rl.ReportServer,
rl.ReportPath);
else
tbReport.Text = "None";
switch (c1SSRSDocumentSource1.BusyState)
{
case C1DocumentSourceBusyState.Generating:
9
Copyright © GrapeCity inc. All rights reserved. SSRSDocumentSource for WinForms
case C1DocumentSourceBusyState.Ready:
case C1DocumentSourceBusyState.Exporting:
case C1DocumentSourceBusyState.Printing:
tbState.Text = string.Format("{0}, Pages: {1}",
c1SSRSDocumentSource1.BusyState, c1SSRSDocumentSource1.PageCount);
break;
default:
tbState.Text = c1SSRSDocumentSource1.BusyState.ToString();
break;
}
ここまでの成果
プロジェクトを実行すると、フォームに配置したラベルに、レポートの場所、状態、および生成されたページ数が表示されます。
10
Copyright © GrapeCity inc. All rights reserved. SSRSDocumentSource for WinForms
コントロールの主なプロパティとメソッド
この後のページでは、C1SSRSDocumentSource コントロールの重要なプロパティとメソッドについて説明します。
主なメソッド
C1SSRSDocumentSource のメソッドのうち、レポートでクエリーの生成と実行に使用されるものの多くには、同期と非同期の2
つのバージョンがあります。
次に例を示します。
C1SSRSDocumentSource.Open - メソッドの同期、ブロックバージョン。
C1SSRSDocumentSource.OpenAsync - 同じメソッドの非同期、非ブロックバージョン。
重要な C1SSRSDocumentSource メソッドのいくつかを次に示します。
プロパティ
説明
Generate
レポートを生成します。このメソッドを呼び出すことができるのは、State が Opened、
Generated、または GeneratedWithErrors のいずれかの場合です。
GenerateAsync
ValidateParameters
現在のパラメータ値を検証し、値が有効な場合は、有効な値のリストを更新します。
ValidateParametersAsync 注意:パラメータ値は、レポートの生成が開始する時自動的適用されます。
Export
サポートされる外部形式の1つ(PDF など)にレポートをエクスポートします。
ExportAsync
Clear
生成されたレポートをクリアします。
主なプロパティ
重要な C1SSRSDocumentSource プロパティのいくつかを次に示します。
プロパティ
説明
DocumentLocation
SSRS レポートの場所を取得または設定します。これには、サーバーのアドレス
(http://ssrs.abc.com/ReportServer など)とレポートのパス(/Adventure Works/Sales
など)が含まれます。
BusyState
ドキュメントソースの現在の多忙状態を表す値を取得します。状態が変わるのは、ド
キュメントソースを開くとき、レポートが何かを生成するときなどです。取り得る多忙状
態のリストについては、「C1DocumentSourceState 列挙」を参照してください。
IsBusy
現在のドキュメントソースの状態が多忙かどうかを示す値を取得します。
IsDisposed
現在のドキュメントソースオブジェクトが破棄されたかどうかを示す値を取得します
PageCount
既に生成されているページ数を取得します。
HasParameters
何らかのパラメータが指定されているかどうかを示す値を取得します。
Parameters
コンテンツの生成に使用されるパラメータのコレクションを取得します。このコレクション
は、Open() メソッドで初期化されます。実際にレポートのパラメータとして使用するに
は、このコレクションで指定されている値に対して、ApplyParameterValues() メソッドを
呼び出す必要があります。
11
Copyright © GrapeCity inc. All rights reserved. SSRSDocumentSource for WinForms
PageLayout
ページ区切り付きドキュメントを生成する際に使用するページレイアウトを指定する
PageLayout オブジェクトを取得または設定します。SSRS レポートでは、PageHeader、
PageFooter、Watermark の各 PageLayout プロパティは無視されます。
ConnectionOptions
SSRS に接続するときに使用されるオプションを含む ConnectionOptions オブジェクト
を取得します。
Credential
SSRS 接続で使用される資格情報を定義する NetworkCredential オブジェクトを取得
または設定します。これは、ConnectionOptions.Credential のショートカットです。
Dirty
現在のコンテンツがダーティで、DocumentLocation、Paginated などの現在の値に対
応しないかどうかを示す値を取得します。
AsyncMethodsUseAwaitPattern 現在のドキュメントソースの非同期メソッドを呼び出す際に、呼び出し元コードが
async/await パターンを使用することを前提とするかどうかを示す値を取得または設定
します。このプロパティが true の場合、*Completed イベント(OpenCompleted、
GenerateCompleted など)は発生しません。
IsCurrentActionCancellable
12
現在のアクションをキャンセルできるかどうかを示す値を取得します。
Copyright © GrapeCity inc. All rights reserved.