下記のクラスはReport Sharp Shooterのデータソースとして使用可能です。
- ADO.NETオブジェクト - System.Data.DataSet、System.Data.DataView、System.Data.DataTable
- System.ComponentModel.IListSourceインターフェースまたはSystem.Collections.Ienumerableインターフェース(Ienumerableインターフェースは、System.Array、System.Collections.ArrayList、System.Collections.CollectionBaseやその他の多数のクラスで実装されます)を実装するユーザオブジェクト(ビジネスオブジェクト)
- 上述されたリストに含まれない任意のクラスのユーザオブジェクト(ビジネスオブジェクト)のプロパティすべてがデータソースとして利用可能です。
それでは、実際に既存のデータベース(MDB)の1テーブルのデータをレポートに一覧表示してみましょう。
この例では、最後にボタンのクリックイベントで実行時のデータ読み込みとビューアとデザイナの呼び出しのために6行だけコードを書きますが、それ以外は1行もコードを記述しません。
まず、Visual Studio(Visual Baisc)の新しいプロジェクト(Windowsアプリケーション)を作成します。
次に、Visual Studioの「データ」メニューの「新しいデータソースの追加」を選択します。
「データソース構成ウィザード」が起動します。
「データソースの種類を選択」画面で「データベース」を選択して、「次へ」ボタンを押します。

「データ接続の選択」画面で「新しい接続」ボタンを押します。

次に開く「接続の追加」ダイアログの「参照」ボタンで、(製品のインストール先がデフォルトの場合)「C:\Program Files\Perpetuum
Software\Net ModelKit Suite\Resources\Data\NWIND.MDB」を選択し、「OK」ボタンを押します。

「データ接続の選択」画面に戻りますので、そのまま「次へ」ボタンを押します。

下図のような、データベースをプロジェクトコピーして使うか、既存のデータベースを直接使うかの選択ダイアログが表示された場合は、「いいえ」を選択してください。

「接続文字列をアプリケーション構成ファイルに保存する」画面では、下図の通り設定し、「次へ」ボタンを押します。

「データベースオブジェクトの選択」画面では、データベースオブジェクト
ツリーの「テーブル」の「Employees」(従業員)を選択し「データセット名」を下図のように設定し、「完了」ボタンを押します。

以上の手順が済むと、下図のようにソリューションエクスプローラに設定したデータセットのスキーマ(*.xsd:画面右)が作成され、そのスキーマをダブルクリックするとデータセットデザイナが(画面左)起動し、生成されたTableAdapterクラスを確認できます。

次に、DataSetを作成します。「ツールボックス」の「データ」タブから「DataSet」をフォームにドロップします。

「データセットの追加」ダイアログが表示されますので、下図のような設定で「OK」ボタンを押します。

すると、下図のようにコンポーネントトレイ上に DataSet が表示されます。

ここまでは、まだReport Sharp Shooterのコンポーネントには何も使用していません。Visual
Studioの機能で、レポートに使うデータを設定しただけです。
ここから先でReport Sharp Shooterのコンポーネントを利用します。
最初に、Visual Studioの「ツールボックス」から「Report
Sharp-Shooter」の「ReportManager」を選択し、フォームにドロップします。

すると、下図のようにコンポーネントトレイ上に ReportManager が表示されます。

次に、ReportManagerにデータソースを関連付けます。コンポーネントトレイ上の
ReportManagerをダブルクリックして「レポートマネージャエディタ」を起動し、「データソース」タブの「追加」ボタンを押します。

「オブジェクトの編集」ダイアログで、下図のように「データソースのみ」にチェックをした後、「値」項目に一覧より
NwindDataSet1.Employees を選択して「OK」ボタンを押します。

<参考>
「名称」フィールドは、レポートで使用するデータソース名を入力するために使用します。「値」フィールドは、アプリケーションで使用するオブジェクト名を選択するために使用され、データソース自体を表します。
その結果、下図のようになります。ここでは、「OK」ボタンを押します。

<参考>結果として、下記のようなコードがInitializeComponent()メソッドに追加されます。
(C#)
this.reportManager.DataSources =
new PerpetuumSoft.Reporting.Components.ObjectPointerCollection(
new string[] {"AccountsDataSet", "CustomersByCity"},
new object[] {this.accountsDataSet, this.customersByCity});
(VB)
Me.reportManager.DataSources =
New PerpetuumSoft.Reporting.Components.ObjectPointerCollection(
New String() {"AccountsDataSet", "CustomersByCity"},
New Object() {Me.accountsDataSet, Me.customersByCity })
データソースを「値」リストに表示するには、System.ComponentModel.Componentクラスから継承してください。コードからデータソースを追加するには、ObjectPointerCollectionクラスのAddメソッドまたはItemプロパティを使用することができます。
(C#)
reportManager.DataSources.Add("DataSourceName", dataSource);
(VB)
reportManager.DataSources.Add("DataSourceName", dataSource)
または、
(C#)
reportManager.DataSources["DataSourceName"] = dataSource;
(VB)
reportManager.DataSources("DataSourceName ") = dataSource
「Add」メソッドには2つのパラメータ(レポートで使用可能なデータソース名とデータソース自体)があります。Itemプロパティを使用する際も同様に名前とデータソースを指定します。レポートのデータソースは、レポートのスクリプトを使用してテンプレートにも直接読み込めます(GetDataExampleサンプルを参照してください)。
次に、いよいよレポートを作成します。
再度、コンポーネントトレイ上の
ReportManagerをダブルクリックして「レポートマネージャエディタ」を起動し、「レポート」タブで「追加」ボタンを押し、選択肢より「InlineReportSlot」を選択します。

すると、下図のような画面になりますので、ここで「デザイナの起動」ボタンを押し(または、InlineReportSlot1をダブルクリックし)ます。

レポートデザイナが起動します。まだ、レポートはありません。ここで、「ファイル」メニューの「新規」を選択します。

ウィザードギャラリが開きますので、新規タブの「標準のレポート」を選択して、「OK」を押します。

スタンダードウィザードが起動します。
「ページ」フレームの中の「+」ボタンを押します。

すると新しいデータセクションのための設定画面が表示されます。

「データセクション」の「データソース」で「...」ボタンを押して New_Name を選択し、ダブルクリックします。

すると、下図のような画面になります。

次に、出力する項目を選択して行きます。
「全フィールド」のNew_Nameのツリーから順に、EmployeeID(従業員ID)、Title(役職)、FirstName、LastNameの各フィールドを選び「→」ボタンで「
目に見えるフィールド」に追加していきます。その際、「キャプション」をそれぞれ、
従業員ID
、役職、FirstName、LastNameというように入力します。
設定が終わったら、「OK」ボタンを押します。

すると、次図のようなデザインが表示されます。
このまま、レポートデザイナを閉じます。保存の確認には「保存する」ように指定します。

ここで、Visual
Studioのデザイン画面でフォーム(Form1)に、2つのボタン(左からButton1、Button2)を貼って、Textプロパティにそれぞれ、"プレビュー"、"デザイン"と入力してください。

その2つのボタンのクリックイベントに次のコードを記述してください。
Private
Sub Button1_Click(ByVal
sender As
System.Object, ByVal
e As
System.EventArgs) Handles
Button1.Click
Dim ta
As
New
NWINDDataSetTableAdapters.EmployeesTableAdapter
ta.Fill(Me.NwindDataSet1.Employees)
'プレビュー
InlineReportSlot1.Prepare()
Dim
previewForm As
PerpetuumSoft.Reporting.View.PreviewForm =
New
PerpetuumSoft.Reporting.View.PreviewForm(InlineReportSlot1)
previewForm.ShowDialog()
End
Sub
Private
Sub Button2_Click(ByVal
sender As
System.Object, ByVal
e As
System.EventArgs) Handles
Button2.Click
'デザイン
InlineReportSlot1.DesignTemplate()
End
Sub
これで、全ての設定は終了です。
それでは、このプロジェクトを実行してください。
以下のような実行画面になります。

「プレビュー」すると次のような画面が表示されます。

「デザイン」ボタンを押した場合は、次のようなレポートデザイナが表示されます。

以上で、この例は終わりですが、実際のアプリケーションでは必要に応じて、色をつけ、罫線を引き、他のデータとのリレーションを設定したりと、より細かいデザインを行うことになるでしょう。
ここで重要なのは、アプリケーション開発者がほとんどコードを書かずに、ビジュアルで簡単にデータと連動したレポートを作成できるということです。
この例では、書いたコードは6行だけでした。
|