はじめに
SQL Server 2008に搭載されているレポートシステム(SSRS:SQL Server Reporting Services)は、Microsoft AccessのようにSQL Serverのデータベースをレポート化する機能です。SSRSで作成したレポートは、ReportServerによってWebページなどで閲覧できます。
C1PrintPreviewコントロールとC1SSRSDocumentSourceを使うと、このSSRSレポートを独自のアプリケーション内で表示・印刷したり、PDF形式で保存したりできるようになります。
そこで今回はこれらのコントロールを使用して、SSRSレポートを表示するアプリケーションを作成してみました。
対象読者
Visual Basic 2010/2012/2013、またはVisual C# 2010/2012/2013を使ってプログラムを作ったことがある人。
必要な環境
Visual Basic 2010/2012/2013、Visual C# 2010/2012/2013、Visual Studio 2010/2012/2013でプログラムが作れる環境。
なお、本プログラムは次の環境で開発・動作確認を行っています。
- OS:Windows 7
- 開発Tool:Visual Studio 2010、.NET Framework 4、SQL Server 2008 Express R2 Service Pack 1
プログラム実行時の注意事項
本稿の実行ファイル(バイナリファイル)を動かすには、zipファイルに同梱してある以下のファイルが必要になります。.NET Framework 4でのみご使用いただけます。
ファイル名 | 説明 |
---|---|
C1.C1Report.4.dll | 本体アセンブリ |
C1.C1Zip.4.dll | 本体アセンブリ |
C1.Win.4.dll | 本体アセンブリ |
C1.Win.C1Document.4.dll | 本体アセンブリ |
C1.Win.C1Report.4.dll | 本体アセンブリ |
C1.Win.C1Ssrs.4.dll | 本体アセンブリ |
これらのファイルを、実行プログラムと同じフォルダに格納します。
コントロールのインストール
トライアル版は、グレープシティのWebページから申し込みできます。
トライアル申込フォームが表示されますので、必要情報を入力して申し込むとトライアル版のダウンロード手順を記載したE-Mailが送られてきます。その手順にそってダウンロードを行ってください。また、ダウンロードファイルは圧縮ファイルになっていますので、解凍してインストーラを起動します。
制限事項などの詳細については、インストーラに同梱されているリリースノートを参照ください。
コントロールと参照の追加
ComponentOne Studioをインストールしたら、プロジェクトにコントロールを追加します。
ツールボックスに専用のタブを作成し、使用するコンポーネントを追加します。追加するコントロールは、アセンブリ名が「C1.Win.C1Report.4」の「C1PrintPreview」コントロールと、アセンブリ名が「C1.Win.C1Document.4」の「C1SSRSDocumentSource」コンポーネントです。
このコントロールを追加すると、プロジェクトに以下のランタイムライブラリへの参照が追加されます。
ファイル | 内容 |
---|---|
C1.C1Report.4 | 本体アセンブリ |
C1.Win.4 | 本体アセンブリ |
C1.Win.C1Document.4 | 本体アセンブリ |
C1.Win.C1Report.4 | 本体アセンブリ |
C1.Win.C1Ssrs.4 | 本体アセンブリ |
C1.Win.C1Zip.4 | 本体アセンブリ |
C1PrintPreviewコントロールの概要
ComponentOne Studioには、C1PrintPreviewコントロールを含む、6つの視覚的なドキュメント表示コンポーネントが組み込まれており、Windowsアプリケーションからドキュメントをプレビュー、印刷、およびエクスポートする機能を備えています。
- C1PrintPreviewControl
- C1PreviewPane
- C1PreviewThumbnailView
- C1PreviewOutlineView
- C1PreviewTextSearchPanel
- C1PrintPreviewDialog
その中の1つ、C1PrintPreviewコントロールは統合された印刷プレビューコントロールです。
プレビューペイン、操作に関連する標準プレビューを備えるツールバー、サムネイルとアウトラインページを含むナビゲーションパネル、および拡張/縮小が可能なテキスト検索パネルが含まれています。
印刷プレビューに必要な機能はすべて組み込まれており、プレビューしたいドキュメントを設定するだけで、アプリケーションに印刷プレビュー機能を組み込むことができます。
C1SSRSDocumentSourceコントロールの概要
C1SSRSDocumentSourceコントロールは、ページ区切り付きSSRSレポートを生成し、C1PrintPreviewコントロールにロードして、Adobe PDF、Microsoft Word、Excelなどのさまざまな形式で表示およびエクスポートできます。
コントロールは以下のメソッドとプロパティを持っています。メソッドでは、同期と非同期の2つのバージョンがあります。
メソッド | 説明 |
---|---|
Open、OpenAsync | レポートを開きます。レポートの生成中を除き、このメソッドは、いつでも呼び出すことができます。 |
Generate、GenerateAsync | レポートを生成します。このメソッドを呼び出すことができるのは、StateがOpened、Generated、またはGeneratedWithErrorsのいずれかの場合です。 |
ApplyParameterValues、ApplyParameterValuesAsync | Parametersで指定されているパラメータ値を現在の値として適用します。 |
CheckParameterValues、CheckParameterValuesAsync | 現在のパラメータ値を検証し、値が有効な場合は、有効な値のリストを更新します。 |
GetPage、GetPageAsync | 指定されたインデックスを持つページを取得します。 |
Export、ExportAsync | サポートされる外部形式の一つ(PDF など)にレポートをエクスポートします。 |
Clear | 生成されたレポートをクリアします。 |
プロパティ | 説明 |
---|---|
DocumentLocation | SSRSレポートの場所を取得または設定します。これには、サーバーのアドレス(http://ssrs.abc.com/ReportServer など)とレポートのパス(/Adventure Works/Salesなど)が含まれます。 |
State | ドキュメントソースの現在の状態を表す値を取得します。状態が変わるのは、ドキュメントソースを開くとき、レポートが何かを生成するときなどです。取り得る状態のリストについては、「C1DocumentSourceState 列挙」を参照してください。 |
PageCount | すでに生成されているページ数を取得します。 |
HasParameters | 何らかのパラメータが指定されているかどうかを示す値を取得します。 |
Parameters | コンテンツの生成に使用されるパラメータのコレクションを取得します。このコレクションは、Open()メソッドで初期化されます。実際にレポートのパラメータとして使用するには、このコレクションで指定されている値に対して、ApplyParameterValues() メソッドを呼び出す必要があります。 |
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 | 現在のアクションをキャンセルできるかどうかを示す値を取得します。 |
アプリケーションの作成
では、アプリケーションを作成していきます。
作成するアプリケーションは、C1SSRSDocumentSourceコントロールでサンプルのSSRSレポートを読み込み、C1PrintPreviewコントロールで表示します。解説の便宜上、サンプルSSRSレポート名はあらかじめアプリケーションに組み込みます。
GUIの作成
使用するアプリケーションはC1PrintPreviewコントロールとC1SSRSDocumentSourceコンポーネントです。C1SSRSDocumentSourceコンポーネントは機能のみの提供でGUIを持ちません。
なお、あらかじめSQL Server Reporting Services ReportServerを起動し、SSRSレポートファイル「Report 平成23年度秋冬野菜収穫量.rdl」をReportServerに配置してください。
(1)新しいWindowsフォームのプロジェクトを作成し、フォームにC1PrintPreviewコントロールをドラッグ&ドロップします。コントロールはフォーム全体に広げておきます。
(2)C1SSRSDocumentSourceコンポーネントをフォームにドラッグ&ドロップします。
(3)C1SSRSDocumentSourceコンポーネントのスマートタグを開き、タスクトレイにある「C1SSRSDocumentSource1」をクリックしてチェックを付けます。これで、C1SSRSDocumentSourceコンポーネントとC1PrintPreviewコントロールが関連付けされます。
(4)C1SSRSDocumentSourceコンポーネントを選択した状態で、プロパティウィンドウにあるDocumentLocationプロパティの横のドロップダウン矢印をクリックします。
(5)ダイアログボックスが表示されますので、SSRSサーバーのアドレスを入力します。今回は、1台のコンピュータ上にネイティブモードでSSRSサーバーを起動していますので、サーバのアドレスは次のようになります。
http://localhost/ReportServer_SQLEXPRESS
(6)レポートのパスを入力します。今回は、サーバのルートにレポートファイルを置いてあるので、そのままレポートファイル名を拡張子を付けずに入力します。
サブフォルダに入れてあるのであれば、そのパスを入力します。例えば、「新しいフォルダー」に「Report 平成23年度秋冬野菜収穫量.rdl」があれば、「新しいフォルダー/Report 平成23年度秋冬野菜収穫量」と入力します。
(7)SSRSサーバーへのログインユーザー名・パスワードが設定されていれば、プロパティウィンドウのConnectionOptionsプロパティグループを展開し、Credentialプロパティに入力します。ここでは、SSRSサーバーへのログインはWindows認証を使用しているので、特に設定はしていません。
(8)以上で出来上がりです。実に簡単ですね。C1SSRSDocumentSourceコンポーネントとC1PrintPreviewコントロールを関連付けし、C1SSRSDocumentSourceコンポーネントにSSRSサーバのアドレスとレポートファイルの場所を設定するだけで、SSRSレポートファイルをアプリケーションで表示できます。表示したレポートは、印刷はもちろんのこと、いろいろな形式のドキュメントや画像にエクスポートできるようになります。
(9)最後に、今のままではフォームを広げてもC1PrintPreviewコントロールは最初に設定したサイズのままになっています。
これを、フォームのサイズに追従してC1PrintPreviewコントロールもサイズ変更できるようにします。方法は簡単で、コードでC1PrintPreviewコントロールのDockプロパティをFillに設定するだけです。
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load C1PrintPreviewControl1.Dock = DockStyle.Fill End Sub
private void Form1_Load(object sender, EventArgs e) { c1PrintPreviewControl1.Dock = DockStyle.Fill; }
まとめ
SSRSレポートは、単なる一覧表を作成できるだけでなく、画像やグラフ化したデータも組み込んだ高度なレポートを作成できる機能を持っています。ただし、そのレポート活用については十分な環境が用意されてはいないようです。
C1SSRSDocumentSourceコンポーネントとC1PrintPreviewコントロールを使用すれば、このレポートを独自のアプリケーションに取り込むことができ、さらにレポートファイル名をリストで一覧表示し選択できるようにしたり、出力先のプリンタ選択や設定をアプリケーションに組み込むようにしたりすれば、SSRSレポートファイルをより活用できる幅が広がると思います。
参考文献
- MSDS SQL Server 2014 オンライン ブック Reporting Services (SSRS)
- MSDS レポートデザイナーおよびレポートビルダー 3.0 を使用したレポートのデザイン (SSRS)
- MSDS SQL Server 2008 R2 オンライン ブック SQL Server Reporting Services
各WebサイトのURLは予告なく変更される場合があります。