意外と簡単!? .NETでOracle「Grapecity コンポーネント活用 ActiveReports編」

日本オラクル クロスインダストリー統括本部
OracleDirect テクニカルサービスグループ
大田 浩


目次
はじめに
ActiveReportsとは
サンプルアプリケーションのインストール
ActiveReportsからODP.NETの利用
HTMLDBとの連携



 はじめに

 「Grapecity コンポーネント活用」シリーズは、Microsoft Visual Studio.NETとVBユーザーや.NETユーザーから高い支持を受けているグレープシティ社のコンポーネント製品を組み合わせたOracle対応アプリケーションの開発方法について説明します。
 実際のサンプルアプリケーションを提供することにより、単なるコーディングTipsにとどまらず、より実践的なアプリケーション開発の資料として構成するようにしております。今回はActiveReports編ということで、ActiveReportsと.NETからOracleデータベースへネイティブに接続するためのミドルウェアである「Oracle Data Provider for .NET(以下、ODP.NET)を利用したアプリケーションの開発方法について、実際のサンプルアプリケーションを動かしながら確認することができます。今回のサンプルアプリケーションの説明はポイントとなる部分のみの説明になりますので予めご了承ください。
 「意外と簡単!? .NETでOracle」シリーズが.NET開発者でオラクルを利用したい方のシステム構築の一助になれば幸いです。

  「Grapecity コンポーネント活用」シリーズは以下の4つの構成を予定しています。
  1. ActiveReports編
  2. InputMan編
  3. Spread編
  4. FlexGrid編
  「Grapecity コンポーネント活用」シリーズの「ActiveReports編」は、以下の4つの内容から構成しております。
  1. ActiveReportsとは
  2. サンプルアプリケーションのインストール
  3. ActiveReportsとODP.NETを利用した開発
  4. HTMLDBとの連携
  「Grapecity コンポーネント活用」シリーズにおける開発環境

データベース・サーバー
OS:Microsoft Windows 2000 Professional + SP4
RDBMS:Oracle Database 10g Release 2 Standard Edition for Windows
開発クライアント
OS:Microsoft Windows 2000 Professional + SP4
開発ツール:Microsoft Visual Studio .NET 2003
その他
Oracle HTML DB 1.6



 ActiveReportsとは

ActiveReportsとは、グレープシティ社から提供されている帳票作成コンポーネントになります。主に以下の特徴があります。

- 卓越したデザイン環境
ActiveReportsのデザイナには、開発者の負荷を軽減させるための、さまざまな工夫が施されています。

- 多様化する帳票ニーズに応える、多彩な表現と入出力
ActiveReportsの秀でた柔軟性とパワフルな表現力はさまざまな帳票形態をサポートします。作成した帳票は、豊富な形式にエクスポートできます。また、Professional Editionでは、これまで要望の高かった外字を含むレポートのPDFエクスポートに対応しました。

- 容易なWebアプリケーション開発
WebサーバーコントロールやHTTPハンドラの使用で、難しいプログラミングを行うことなく、Web帳票開発を実現できます。

 その他、Visual Studio .NETに完全統合し、VS.NETのUIと同じ操作性のため習得が容易で、快適な使用感を与えます。バーコード出力やサブレポート対応などの多彩な機能は、あらゆるニーズに応える帳票作成を可能にし、エクスポート機能でさらなる利便性を提供します。ActiveReportsのより詳細な情報はグレープシティ社の以下のURLを参照してください。

 グレープシティ社 − ActiveReports製品情報
 http://www.grapecity.com/japan/support/database/P7_330.htm

今回はActiveReportsの2006年1月時点で最新版のバージョンである、「ActiveReports for .NET 2.0J」を使用しております。


 サンプルアプリケーションのインストール

 サンプルアプリケーションは以下のサイトよりダウンロードできます。

 http://otndnld.oracle.co.jp/easy/dotnet/active_reports/sample.zip

 ダウンロードファイル(sample.zip)を任意の一時フォルダに保存し、解凍してください。解凍しますと「ActiveReportDemo」、「ActiveReportDemo_ASPNET」、「ActiveReportDemo_WebService」という3つのフォルダが作成されます。それぞれのフォルダには以下の情報が格納されています。

- ActiveReportDemo
VB.NETで作成されたスマートクライアント・サンプルアプリケーションが格納されています。

- ActiveReportDemo_ASPNET
ASP.NETで作成されたサンプルアプリケーションが格納されています。

- ActiveReportDemo_WebService
VB.NETで作成されたXML WEBサービスのインターフェースが格納されています。

  Internet Information Services(IIS)の設定 (アプリケーション・サーバー上での設定)

 ダウンロードファイル(sample.zip)を解凍後に作成されるActiveReportDemo_ASPNETディレクトリとActiveReportDemo_WebServiceディレクトリをInternet Information Services(IIS)から参照できるように以下の手順に従って設定します。今回は sample.zipファイルを「C:\ActiveReport」ディレクトリに展開したという想定で説明を行います。解凍後のディレクトリ構成は以下のようになります。
それぞれの役割は以下のようになります。


1. IIS管理画面の起動
「コントロール・パネル」の管理ツールより「インターネット・サービス・マネージャ」を起動してください。


2. 仮想ディレクトリの作成
Windowsエクスプローラを使用して、IISから利用する仮想ディレクトリを作成します。仮想ディレクトリを作成したいフォルダ(はじめに、ActiveReportDemo_ASPNET)を右クリックし、[共有とセキュリティ]をクリックします。


フォルダプロパティの[WEB共有]タブの[共有]ボックスで、「仮想ディレクトリを作成する」を選択します。


[エイリアス編集]ダイアログボックスの[エイリアス]ボックスに、仮想ディレクトリの名前を入力します。デフォルトでフォルダ名が設定されているので、今回はそのまま使用します。


「OK」ボタンをクリックすることにより仮想ディレクトリの設定が完了します。同様に、「ActiveReportDemo」フォルダと「ActiveReportDemo_WebService」フォルダも同様に設定をおこなってください。仮想ディレクトリの設定が終了したら次にIIS上でActiveReportsを動作させるための設定をおこないます。こちらの設定はActiveReportsのヘルプを参照して設定を行ってください。

ActiveReportsヘルプ − Webアプリケーションの実行前に必要な設定
ms-help://MS.VSCC.2003/dd.ActiveReports.1041/ddARUG/html/artskManualConfigurationofWebSamples.html

  サンプルアプリケーションの動作確認

 IIS上での設定が終わりましたら、次にサンプルアプリケーションの動作確認をおこなってみましょう。ダウンロードファイル(sample.zip)を解凍後に作成されるActiveReportDemoディレクトリ下にある、VS.NETのソリューションファイル「ActiveReportDemo.sln」をVS.NETから開いてください。ActiveReportDemo.slnファイルには以下の3つのプロジェクトが含まれているのが、ソリューション・エクスプローラから確認できます。
- ActiveReportDemo(スマートクライアントアプリケーション)
- ActiveReportDemo_ASPNET(ASP.NET WEBアプリケーション)
- ActiveReportDemo_WebService(ASP.NET WEBサービス)


 アプリケーションの動作環境として、中間層にWEBサービスを配置し、Oracleデータベースとのデータ連携はWEBサービスがおこないます。Oracleデータベースから取得したデータの結果をASP.NET経由でのWEBブラウザで表示するか、Windowsフォームでの画面表示をおこないます。


 サンプルアプリケーションの動作確認をおこなう前に、Oracleデータベースに接続しているWEBサービスプロジェクトの接続文字列を変更します。ActiveReportDemo_WebServiceプロジェクト内にある、ActiveRepotDemo.asmxのデザイン画面を開き、「demoProductInfoOracleConnection1」コントロールの「ConnectionString」プロパティを変更してください。


 初期状態では以下のように設定されています。

User Id=sample;Data Source=orcl10gr2;Password=sample

 「User Id」では「Sample」と指定していますが、こちらは次のセクションで説明する「HTMLDBのインストール」の作業が完了していれば、「sample」ユーザーが作成されています。「Data Source」はOracleデータベースへ接続するためのデータソース名となります。接続文字列を適切に設定したら、次にASP.NET WEBアプリケーションを実行してみましょう。VS.NETのソリューション・エクスプローラから「ActiveReportDemo_ASPNET」プロジェクトを右クリックし、「スタートアップ プロジェクトに設定(A)」を選択します。


 次に、VS.NETのメニュー「デバッグ(D)」−>「開始(S)」を選択して実行します。


 以上のようにActive Reportで作成されたWEBページが確認できます。次にスマートクライアントアプリケーションで確認をおこなってみましょう。VS.NETのソリューション・エクスプローラから「ActiveReprotDemo_WinForm」プロジェクトを右クリックし、「スタートアップ プロジェクトに設定(A)」を選択します。


 次に、VS.NETのメニュー「デバッグ(D)」−>「開始(S)」を選択して実行します。


 プロダクト一覧を印刷するためのウィンドウが表示されますので、「プロダクト一覧印刷へ」ボタンをクリックします。


 以上のようにActive Reportで作成されたWindowsフォームの画面が確認できます。以上でサンプルアプリケーションの動作確認をおこないました。動作確認はVS.NETからおこないましたが、今回のサンプルアプリケーションはOracle HTML DB(以下、HTMLDB)のサンプルアプリケーションと連携して印刷をおこないますので、以下の手順でHTMLDBのインストールをおこなってください。

  HTMLDBのインストール

 HTMLDBはOracle Technology Network(以下、OTN)の以下のURLよりダウンロード可能です。

 OTN - Oracle HTML DB ダウンロード
 http://otn.oracle.co.jp/software/products/htmldb/index.html

 Oracle HTML DB本体は、OTNよりダウンロードするか、Oracle Database 10gのOracle Database 10g Companion CDに含まれています。インストールに関しては、マニュアル「Oracle HTML DBドキュメント」を参照してください。
 今回のActiveReportsを使用したサンプルアプリケーションは、HTMLDBに付属するサンプルアプリケーションと連携しています。その為、以下の作業をおこないHTMLDBのサンプルアプリケーションが動作するように設定をおこなってください。

1. HTMLDBに管理者としてログイン
HTMLDBのログイン画面に以下の情報を入力して、「ログイン」ボタンをクリックします。

作業領域 internal
ユーザー名 admin
パスワード [パスワード]


2. 新しい作業領域の作成
HTML DB管理画面で、「新しい作業領域」をクリックします。


3. 作業領域名の入力
作業領域名は「sample」と入力し、「次へ」をクリックします。


4. スキーマの作成
以下の情報を入力し、「次へ」をクリックしてください。
既存スキーマの再利用 いいえ
スキーマ名 sample
スキーマのパスワード 任意の値を入力
領域割当て制限 小: 2MB


5. HTML DBの管理者パスワードを入力
新たな作業領域を作成するため、HTML DBの管理者情報(ADMIN)とメールアドレスを入力して、「次へ」をクリックしてください。


6. 割当てリクエストを確認
割り当てリクエスト内容を確認し、「割当て」をクリックしてください。


しばらくすると以下の割り当て終了の画面が表示されますので、「完了」をクリックしてください。


以上の作業でHTMLDBのサンプルアプリケーションのインストールと実行環境が整いました。実際にログインして試してみましょう。HTMLDBに上記の作業で作成した作業領域で「ADMIN」ユーザーでログインしてください。


HTML DBの開発者用のメニュー画面が表示され、デフォルトのサンプルアプリケーション「Sample Application v1.6」がインストールされているのが確認できますので、そちらをクリックしてください。


「実行」アイコンをクリックします。


サンプルアプリケーションにログインするための以下の情報を入力し、「ログイン」ボタンをクリックしてください。

ユーザー名 demo, もしくはsample
パスワード sample(作業領域名を小文字で入力)


サンプルアプリケーションのトップページで、「Products」をクリックします。


商品一覧画面が表示されます。今回はこの商品一覧画面にActiveReportsで作成した帳票を連携する方法をこれから説明します。



 ActiveReportsからODP.NETの利用

 では、実際にActiveReportsのコンポーネントからODP.NETを利用してOracleに格納された情報の印刷をおこなってみましょう

  DataSetの内容をActiveReportsで表示

今回のサンプルアプリケーションでは、WEBサービス上でOracleデータベースからデータを取得しDataSetに格納、WEBサービスクライアント(WindowsForm, ASP.NET)でDataSetの内容をActiveReportsに連携して表示しています。実際の手順は以下のようになります。

-DataSetにデータを格納
Oracleデータベースからデータを取得しDataSetに格納する手順は以下のようになります。

1. Oracleデータベースへのコネクションの設定
Oracleへの接続するためのコネクションの設定を行います。Oracleへのコネクションを確立するためには、どのOracleデータベースへどんなユーザーで接続するかという情報を接続文字列として設定する必要があります。接続文字列はコードで記述することも可能ですが、Oracle Developer Tools for Visual Studio .NET(以下、ODT)を利用すると簡単です。ODTを利用したOracleデータベースへの接続について説明します。

-Oracleエクスプローラにデータ接続の追加
Oracleエクスプローラの「データ接続」を右クリックし、接続の追加(A)を選択します。


- 接続先情報の入力
Oracleデータベースへの接続情報を入力します。

データソース名 <データソース名>
ユーザー名 sample
パスワード sample


データソース名はNetwork Configuration Assistant(以下、netca)で設定されたデータソース名を指定します。ユーザー名とパスワードはHTMLDBをインストールした際にインストールされたスキーマ「sample」を指定します。入力された情報が正しいか確認するために、「テスト接続(T)」をクリックすると、以下の画面が表示されます。


接続が失敗した場合は、再度接続文字列、ユーザー名、パスワードの内容が正しいか確認をおこなってください。テストが終了後、「接続を追加」ウィンドウで「OK」ボタンをクリックすると、「Oracleエクスプローラ」に接続情報が追加されます。


2. DataAdapterの設定
Oracleデータベースへの接続情報の設定が完了したら、次にDataAdapterの設定をおこない、DataSetへ格納する情報の設定をおこないます。DataAdapterの設定もODTを使用します。Oracleエクスプローラから対象 表を選択し、デザインウィンドウにドラッグ・アンド・ドロップします。


ドラック・アンド・ドロップ後に、パスワード保存のダイアログが表示されますので、「はい(Y)」をクリックします。


以上の作業でDataAdapterの作成は完了です。DataAdapterオブジェクトとConnectionオブジェクトが自動生成されているのが、デザインウィンドウで確認できます。


今回は、HTMLDBのサンプルスキーマに格納されている以下の2つのテーブルから情報を印刷しています。

- DEMO_PRODUCT_INFO(商品情報テーブル)
- DEMO_IMAGES(商品画像格納テーブル)

上記2つのテーブルを結合して商品情報としてActiveReportsとして表示するので、DataAdapterのSelectCommand、CommandTextプロパティの内容を以下の内容で修正します。

SELECT a.*,b.image
FROM demo_product_info a, demo_images b
WHERE a.image_id = b.image_id(+)

Oracleエクスプローラからテーブルをドラック・アンド・ドロップした場合にはDataAdapterのSelectCommand、CommandTextプロパティの内容はドラッグ・アンド・ドロップされた単一テーブルのSQLが設定されているので、SQLの変更は直接CommandTextプロパティの内容を変更します。


3. DataSetへのデータの格納
DataAdapterの設定が完了したら、次にDataSetにデータを格納するための手順について説明します。上記作業で作成したDataAdapterオブジェクトを右クリックし、「DataSetを生成...」を選択します。


以上の作業でDataSetオブジェクトが自動生成されたのがデザインウィンドウから確認できます。


また、ODTを使用してDataSetオブジェクトを生成すると、型付データセットとして生成され、XMLスキーマファイル(xsdファイル)も自動生成されます。


ODTにより作成されたDataAdapterからDataSetへのデータの格納は以下のようなコードになります。

demoProductInfoOracleDataAdapter1.Fill(ProductInfoDataSet)

上記コードはDataAdapterのFillメソッドを使用してDataSetにデータを格納しています。今までの説明でDataSetに格納するまではODTを利用することにより簡単におこなえるのが確認できたと思います。今まで説明した内容はサンプルアプリケーションのWEBサービスの部分「ActiveReportDemo_WebService.vbproj」こちらの、「ActiveRepotDemo.asmx」を参照してください。次にDataSetの内容をActiveReportを使用して表示してみましょう。

- DataSetとActiveReportsの連携
WEBサービスからデータを取得しDataSetに格納後、ActiveReportsにDataSetの内容を表示するコードは以下のようになります。

'' Webサービスを呼び出して、レポート用データセットを取得する
ds = ws.getProductInfo

'' レポートを生成する
Dim rpt As New ActiveReport1
Dim dv As DataView = ds.Tables(0).DefaultView
dv.Sort = "PRODUCT_ID"
rpt.DataSource = dv

'' レポートをビューワコントロールに表示します。
Me.Viewer1.Document = rpt.Document
rpt.Run(True)

ActiveReportsは以下のオブジェクトをDataSourceとして指定することにより、そのオブジェクトに格納されている内容を表示することが可能です。

- DataSet
- DataView
- DataReader
- DataTable

今回のサンプルアプリケーションではDataViewの内容を表示していますが、その他のオブジェクトの内容も、ActiveReportsのDataSourceに指定するだけで表示することが可能です。

  BLOBフィールドへの対応

画像などを扱うBLOBフィールドの内容もActiveReportsで表示が可能です。今回のサンプルアプリケーションでは実際にBLOBフィールドに格納された商品イメージをActiveReportsで表示しています。


 HTMLDBのサンプルスキーマ「demo_imagegs」テーブルの内容をActiveReportsで表示するには、ActiveReportsツールボックスの「PictureBox」を選択して、ActiveReportsのデザインウィンドウにドラッグ・アンド・ドロップするだけです。


以上の作業のみで、DataSetに格納された画像データをActiveReportsで表示することが可能になります。


 HTMLDBとの連携

上記作業で作成したサンプルアプリケーションとHTMLDBのサンプルアプリケーションを連携してみましょう。作業手順は以下のようになります。

1. HTMLDBにログイン
サンプルアプリケーションの章で作成した作業領域でHTMLDBにログインします。


2. 修正対象のアプリケーションの選択
HTMLDBのアプリケーション・ビルダーで変更対象のアプリケーションを選択します。今回は、「Sample Application v1.6」を選択します。


3. 修正対象ページの選択
修正対象のページである、「Products」を選択します。


4. 印刷ボタンの作成
「ボタン」タグの「作成」アイコンを選択します。


5. リージョンの選択
リージョンの選択では、「Products 1.10」を選択して、「次へ」をクリックしてください。


6. ボタン位置の指定
「リージョン位置にボタンを作成」を選択して、「次へ」をクリックしてください。


7. ボタン名およびラベル名を指定
以下の必要な情報を入力して、「次へ」をクリックしてください。

ボタン名 : PRINTLIST
ラベル名 : Print List
ボタン・タイプ : テンプレートによる作成
アクション : ページを送信せずにURLにリダイレクト


8. イメージ属性またはテンプレートを指定
ボタン・テンプレートは、「Button」を選択して、「次へ」をクリックしてください。


9. 表示プロパティの設定
以下の必要な情報を入力してください。
位置 リージョンの下部
順序 デフォルト表示のまま
位置合せ


10.ブランチ処理
以下の必要な情報を入力してください。

ターゲットは URL
URLターゲット ASP.NETもしくはスマートクライアントいずれかのインターフェースにより以下のように異なります。

ASP.NET
http://[サーバー名、もしくはIPアドレス]/ActiveReportDemo_ASPNET/Report.aspx?Action=prtProductInfo

スマートクライアント
http://[サーバー名、もしくはIPアドレス]/ActiveReportDemo/ bin/ActiveReprotDemo_WinForm.exe


「変更を適用」をクリックすると、「ボタンが作成されました。」のメッセージが表示され、ボタンタグに新規ボタンが作成されているのが確認できます。


では、実際にアプリケーションを実行してみましょう。「Builder - アプリケーション100」をクリックします。


「実行」アイコンをクリックします。


サンプルアプリケーションにログインするための以下の情報を入力し、「ログイン」ボタンをクリックしてください。

ユーザー名 demo, もしくはsample
パスワード sample(作業領域名を小文字で入力)


サンプルアプリケーションのトップページで、「Products」をクリックします。


商品一覧画面が表示され、画面下部に「Print List」ボタンが追加されているのが確認できますので、そのボタンをクリックします。


ActiveReportsで作成した以下のリスト画面が表示されるのが確認できます。以下の画面はASP.NETによるWEBページの画面になります。


スマートクライアントをリンク先に指定した場合は、以下のような画面が起動しますので、「プロダクト一覧へ」をクリックしてください。


ActiveReportsで作成した以下の画面が表示されるのが確認できます。


このように開発生産性の高いHTMLDBと高機能な帳票コンポーネントであるActiveReportsを組み合わせることにより、高機能なアプリケーションを効率良く開発することが可能となります。是非お試しください。