はじめに
日本の業務においては、発注/納品、あるいは請求/入金といった取引の多くは帳票によるやりとりで成立しています。Webサービスなどを導入し、業務プロセスが合理化してもなお、「帳票」は日本の企業取引において重要視されているのです。
そのため、帳票に関するユーザーのこだわりは非常に強く、さまざまな要求に応えた結果、帳票部分だけを、システムとは別のツールで開発するということも多々ありました。
Microsoft Accessによるレポート生成もそのような背景のもとに開発され、多くの企業で今も使われ続けています。しかし、SOX法施行により、業務システムのセキュリティ管理や整合性が厳しく求められる中、メインの業務システムから切り離されて存在している大量のAccessレポート資産をどうするかが問題になっています。
大量のAccessレポート資産をどうするか
Microsoft Accessはデータベースソフトですが、その中に含まれる「レポート」機能は古くから定評があり、帳票部分だけにAccessを使用しているということは少なくありません。しかし、「.NETでも帳票部分だけはAccessのままでいこう」と考えている方は、ちょっと待ってください。それではせっかく .NETで構築するメリットが失われてしまいます。
.NETテクノロジーのメリットは?
.NETテクノロジーを採用するメリットをまとめると下図のようになります。
開発面でのメリットは「開発生産性の大幅な向上」です。これは .NET Frameworkクラスライブラリを利用したオブジェクト指向プログラミングを、強力なIDEであるVisual Studioを利用することで実現します。
一方、動作/運用面でのメリットは、共通言語ランタイム(CLR)が提供する各種システムサービスを利用したマネージコードで、アプリケーションが動作することです。これまでは、開発者や運用管理者が気を配る必要のあったメモリ管理、セキュリティ管理、バージョン管理を、すべて共通言語ランタイムが引き受けてくれます。
.NETテクノロジーによるメリットを享受するには、アプリケーションのすべてをVB .NETやC#などのマネージコードと呼ばれる .NETの言語で構築しなければなりません。つまり、帳票部分だけAccessを採用すると共通言語ランタイム上での動作ができず、大きなメリットを失うのです。
Access資産を.NETで有効活用できる「ActiveReports」
では、帳票部分をどうやって .NETへ移行すればいいのか?そんな方にActiveReports for .NETをお勧めします。ActiveReports for .NETは、マネージコードで構築されたVisual Studio用の本格的な帳票ツールです。そして、AccessやCrystal Reportsで作成したレポートデザインをActiveReportsの形式へと変換する専用ツールが付属しているので、移行が簡単です。
Microsoft Access/Crystal Reportsからの移行
それでは、早速Microsoft Access、およびCrystal Reportsを移行してみましょう。
ActiveReportsの「インポートウィザード」を使用します。移行できるのはレポートのデザイン情報のみで、コードは移行できません。移行が成功すると1つのレポートにつき1個のレポートデザインファイル(*.rpx)が出力されます。レポートデザインファイルは、ActiveReportsに簡単に取り込むことができます。製品ヘルプ「インポートウィザード」に詳細な情報が記載されています。
※ Microsoft Access をインポートする場合、Microsoft Access 97, 2000, 2002, 2003, 2007のいずれかがコンピュータにインストールされている必要があります。
※ Crystal Reports をインポートする場合、Visual Studioと共に、以下のバージョンのCrystal Reportsのいずれかがコンピュータにインストールされている必要があります。
・ Crystal Reports for Visual Studio 2005(10.2.3600.0)
・ Crystal Reports Basic for Visual Studio 2008(10.5.3700.0)
移行手順
- (1)
- Windowsの「スタートメニュー」から「インポートウィザード for VS2005」を起動します。
※Visual Studio 2008 をお使いの場合は「インポートウィザード for VS2008」になります。

- (2)
- 「Microsoft Access」または「Crystal Reports」を選択すると、ウィザードが起動します。案内に従って、既存のレポートから、RPXファイルを生成します。

Accessのウィザード画面

Crystal Reportsのウィザード画面
- (3)
- ActiveReports for .NETのデザイナ上で、[レポート]メニューから[レイアウト ファイルを開く]を選択し、(2)で生成したRPXファイルを読み込みます。

- (4)
- 実行結果はこのようになります
Accessでのプレビュー表示
変換したレポートをWindows
アプリケーションとしてプレビュー表示
ActiveReports 2.0J(ActiveX製品)からの移行
.NET製品のActiveReportsは、.NET Frameworkの共通言語ランタイム(CLR)と基本クラスライブラリ(BCL)をベースとして開発されているためActiveX製品
(※)との間に互換性はなく、完全な移行ツールは提供しておりません。しかし、ActiveReports 2.0Jを使用してデザインしたレポートに限り、デザイン情報を .NET版に移行することができます。レポートのコード部分については、.NETアプリケーションの開発手順に従い、新規アプリケーションとして開発し直す必要があります。[Visual Basic 6 コードのアップグレード]ダイアログボックスなどによる移行はサポートされません。
※ActiveReports 1.0J/1.5J/2.0J
それでは、デザイン情報の移行手順および、.NET製品とActiveX製品との違いについて、あらかじめ知っておきたいいくつかのポイントを紹介しましょう。
移行手順
- (1)
- ActiveReports 2.0Jのデザイナ上で、[ファイル]メニューから[保存]を選択し、レポートをRPXファイルに保存します。

- (2)
- ActiveReports for .NETのデザイナ上で、[レポート]メニューから[レイアウト ファイルを開く]を選択し、(1)で保存したRPXファイルを読み込みます。

.NET製品とActiveX製品の違い
- (1)
- レポートクラス
主な変更点は、クラスのリファクタリングと .NET Frameworkの命名規則に合わせたオブジェクトおよびメンバの名前変更です。レポートオブジェクトモデルの変更は、最小限にとどめていますが、重要な点は以下のとおりです。
- ActiveX製品は、Showメソッドを使用することで、レポートの実行結果をプレビューすることが可能でしたが、.NET製品では、Runメソッドとビューワコントロールを使用してレポートを表示する必要があります。
- 各セクションに対応した次のクラスを追加しました。
Detail、GroupHeader、GroupFooter、PageHeader、PageFooter、ReportHeader、ReportFooter。
ActiveX製品の旧Sectionオブジェクトを利用することも可能です。
- Stylesheetクラスの追加により、レポート内で定義されたスタイルにアクセス可能。各レポートコントロールのスタイルを変更できます。
- Imageコントロールの名前がPictureに変更。
- Fieldコントロールの名前がTextBoxに変更。
- TextBoxとLabelでテキストの複数行の両端揃えオプションが使用できます。
- データコントロールに代わり、OleDBDataSource、XmlDataSource、SqlDBDataSource、ListDataSourceの4つのデータソースクラスを追加しました。
- Pagesコレクションを分割。ActiveX製品のPagesクラスを、PagesCollectionクラスとDocumentクラスに再構成しました。新しいDocumentクラスには、RDFファイルとストリームを保存/読み込みするためのすべてのメンバが含まれます。
- 計測単位をTwipsからインチに変更。
- Frameコントロールの削除。
- (2)
- 印刷
- PrintControllerクラスとPrintControllerWithStatusクラスが追加され、印刷モデルが .NET Frameworkに準拠しました。
- ビューワコントロールは .NET FrameworkのPrinterクラスとPrinterSettingsクラスを使用します。
- Document.Printメソッドの呼び出しによるレポートの生成が行われません。ドキュメントを印刷する前に、レポートを生成しておく必要があります。
- (3)
- ビューワ
- ToolbarクラスとToolsクラスが刷新されました。
- TOC(見出し一覧)コレクションからTOCツリーコントロールが独立し、TOCコレクションの名称がBookmarksCollectionに変わりました。
- ビューワコントロールにはActiveReportsオブジェクトではなく、Documentオブジェクトがバウンドされます。
ActiveReports for .NET 1.0J/2.0J/3.0Jからの移行
旧バージョンの.NET製品
(※)からの移行には、専用のプロジェクト移行ツール「ActiveReports 6.0J ファイル コンバータ」を提供していますので以前のActiveReportsプロジェクトを簡単に移行できます。
※ActiveReports for .NET 1.0J/2.0J/3.0J
移行手順
- (1)
- 移行元のActiveReportsプロジェクトを開きます。

- (2)
- [ツール]メニューから[ActiveReports 6.0J ファイル コンバータ]をクリックし、ActiveReports ファイル コンバータを開きます。画面にはプロジェクトに含まれるすべてのレポートファイルが一覧表示されます。


- (3)
- 〈OK〉ボタンをクリックすると、以前のレポートファイルが、新しいレポートファイルに変換されます。同時に、ActiveReportsアセンブリの参照設定が更新されます。
- (4)
- ライセンス情報を移行します。 移行方法は、製品ヘルプ「ライセンス情報を移行する」をご確認ください。
- (5)
- 移行元のActiveReportsのバージョンやアプリケーションの処理によっては、一部のコードを手動で変更する必要があります。詳細は製品ヘルプ「移行について」をご覧ください。
- (6)
- プロジェクトをリビルドします。