SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

ComponentZine(ComponentOne)(AD)

SSRSレポートを表示する.NETアプリケーションの作成

ComponentOne Studioを活用したWindowsフォームアプリケーションの作成

  • このエントリーをはてなブックマークに追加

 「ComponentOne Studio」に含まれるC1PrintPreviewコントロールとC1SSRSDocumentSourceを使って、SQL Server 2008に搭載されているレポートシステム(SSRS:SQL Server Reporting Services)を使ったレポートを扱うアプリケーションを作成してみます。

  • このエントリーをはてなブックマークに追加

はじめに

 SQL Server 2008に搭載されているレポートシステム(SSRS:SQL Server Reporting Services)は、Microsoft AccessのようにSQL Serverのデータベースをレポート化する機能です。SSRSで作成したレポートは、ReportServerによってWebページなどで閲覧できます。

 C1PrintPreviewコントロールとC1SSRSDocumentSourceを使うと、このSSRSレポートを独自のアプリケーション内で表示・印刷したり、PDF形式で保存したりできるようになります。

 そこで今回はこれらのコントロールを使用して、SSRSレポートを表示するアプリケーションを作成してみました。

SQL Server Business Intelligence Development Studioで作成したレポートを、
SQL Server Business Intelligence Development Studioで作成したレポートを、
独自のアプリケーションにC1PrintPreviewコントロールコンポーネントを組み込んで表示
独自のアプリケーションにC1PrintDocumentコンポーネントを組み込んで表示
レポートは印刷はもちろん、PDF形式で保存することもできる
レポートは印刷はもちろん、PDF形式で保存することもできる

対象読者

 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.Win.C1Report.4」の「C1PrintPreview」コントロールと
アセンブリ名が「C1.Win.C1Report.4」の「C1PrintPreview」コントロールと@@
アセンブリ名が「C1.Win.C1Document.4」の「C1SSRSDocumentSource」コンポーネントを追加する
アセンブリ名が「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コントロールは統合された印刷プレビューコントロールです。

 プレビューペイン、操作に関連する標準プレビューを備えるツールバー、サムネイルとアウトラインページを含むナビゲーションパネル、および拡張/縮小が可能なテキスト検索パネルが含まれています。

 印刷プレビューに必要な機能はすべて組み込まれており、プレビューしたいドキュメントを設定するだけで、アプリケーションに印刷プレビュー機能を組み込むことができます。

C1PrintPreviewコントロールの構成
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コントロールをドラッグ&ドロップします。コントロールはフォーム全体に広げておきます。

フォームにC1PrintPreviewコントロールをドラッグ&ドロップ
フォームにC1PrintPreviewコントロールをドラッグ&ドロップ

 (2)C1SSRSDocumentSourceコンポーネントをフォームにドラッグ&ドロップします。

C1SSRSDocumentSourceコンポーネントをフォームにドラッグ&ドロップ
C1SSRSDocumentSourceコンポーネントをフォームにドラッグ&ドロップ

 (3)C1SSRSDocumentSourceコンポーネントのスマートタグを開き、タスクトレイにある「C1SSRSDocumentSource1」をクリックしてチェックを付けます。これで、C1SSRSDocumentSourceコンポーネントとC1PrintPreviewコントロールが関連付けされます。

タスクトレイにある「C1SSRSDocumentSource1」をクリックしてチェックする
タスクトレイにある「C1SSRSDocumentSource1」をクリックしてチェックする

 (4)C1SSRSDocumentSourceコンポーネントを選択した状態で、プロパティウィンドウにあるDocumentLocationプロパティの横のドロップダウン矢印をクリックします。

ドロップダウン矢印をクリック
ドロップダウン矢印をクリック

 (5)ダイアログボックスが表示されますので、SSRSサーバーのアドレスを入力します。今回は、1台のコンピュータ上にネイティブモードでSSRSサーバーを起動していますので、サーバのアドレスは次のようになります。

http://localhost/ReportServer_SQLEXPRESS
SSRSサーバーの状態
SSRSサーバーの状態
SSRSサーバーのアドレスを入力
SSRSサーバーのアドレスを入力

 (6)レポートのパスを入力します。今回は、サーバのルートにレポートファイルを置いてあるので、そのままレポートファイル名を拡張子を付けずに入力します。

サーバのルートにレポートファイルを置いてある
サーバのルートにレポートファイルを置いてある
そのままレポートファイル名を拡張子を付けずに入力
そのままレポートファイル名を拡張子を付けずに入力

 サブフォルダに入れてあるのであれば、そのパスを入力します。例えば、「新しいフォルダー」に「Report 平成23年度秋冬野菜収穫量.rdl」があれば、「新しいフォルダー/Report 平成23年度秋冬野菜収穫量」と入力します。

「新しいフォルダ-」に「Report 平成23年度秋冬野菜収穫量.rdl」があれば
「新しいフォルダ-」に「Report 平成23年度秋冬野菜収穫量.rdl」があれば
「新しいフォルダー/Report 平成23年度秋冬野菜収穫量」と入力
「新しいフォルダー/Report 平成23年度秋冬野菜収穫量」と入力

 (7)SSRSサーバーへのログインユーザー名・パスワードが設定されていれば、プロパティウィンドウのConnectionOptionsプロパティグループを展開し、Credentialプロパティに入力します。ここでは、SSRSサーバーへのログインはWindows認証を使用しているので、特に設定はしていません。

プロパティウィンドウのConnectionOptions プロパティグループを展開し、Credentialプロパティに入力
プロパティウィンドウのConnectionOptions プロパティグループを展開し、Credentialプロパティに入力

 (8)以上で出来上がりです。実に簡単ですね。C1SSRSDocumentSourceコンポーネントとC1PrintPreviewコントロールを関連付けし、C1SSRSDocumentSourceコンポーネントにSSRSサーバのアドレスとレポートファイルの場所を設定するだけで、SSRSレポートファイルをアプリケーションで表示できます。表示したレポートは、印刷はもちろんのこと、いろいろな形式のドキュメントや画像にエクスポートできるようになります。

いろいろな形式のドキュメントや画像にエクスポートできるようになる
いろいろな形式のドキュメントや画像にエクスポートできるようになる

 (9)最後に、今のままではフォームを広げてもC1PrintPreviewコントロールは最初に設定したサイズのままになっています。

フォームを広げてもC1PrintPreviewコントロールは最初に設定したサイズのまま
フォームを広げてもC1PrintPreviewコントロールは最初に設定したサイズのまま

 これを、フォームのサイズに追従してC1PrintPreviewコントロールもサイズ変更できるようにします。方法は簡単で、コードでC1PrintPreviewコントロールのDockプロパティをFillに設定するだけです。

Visual Basic
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    C1PrintPreviewControl1.Dock = DockStyle.Fill
End Sub
C#
private void Form1_Load(object sender, EventArgs e)
{
    c1PrintPreviewControl1.Dock = DockStyle.Fill;
}
フォームのサイズに合わせてC1PrintPreviewコントロールもサイズ変更される
フォームのサイズに合わせてC1PrintPreviewコントロールもサイズ変更される

まとめ

 SSRSレポートは、単なる一覧表を作成できるだけでなく、画像やグラフ化したデータも組み込んだ高度なレポートを作成できる機能を持っています。ただし、そのレポート活用については十分な環境が用意されてはいないようです。

 C1SSRSDocumentSourceコンポーネントとC1PrintPreviewコントロールを使用すれば、このレポートを独自のアプリケーションに取り込むことができ、さらにレポートファイル名をリストで一覧表示し選択できるようにしたり、出力先のプリンタ選択や設定をアプリケーションに組み込むようにしたりすれば、SSRSレポートファイルをより活用できる幅が広がると思います。

参考文献

 各WebサイトのURLは予告なく変更される場合があります。

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/8646 2015/11/10 15:30

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング