ActiveReportsでは、ローカルコンピュータのサンプルデータベースの場所に基づいて、レポートのデータソースを実行時に変更できます。
このトピックでは、以下のタスクを行います。
- Visual StudioプロジェクトにActiveReportを追加する
- レポートを設計時のデータソースに接続する
- レポートのレイアウトを作成する
- データベースへのパスを設定する
- 実行時にデータソースを変更するためにコードを追加する
- データ接続を切るためにコードを追加する
- レポートを表示する
 |
メモ: このチュートリアルはNWindデータベースを使用しています。NorthWindデータベース(Nwind.mdb)へのアクセス権限が必要です。 |
チュートリアルを完了すると、次のレポートが作成されます。
設計時のレイアウト
実行時のレイアウト
Visual StudioプロジェクトにActiveReportを追加する
- Visual Studioで新規プロジェクトを開きます。
- [プロジェクト]メニューから[新しい項目の追加]を選択します。
- [新しい項目を追加]ダイアログから[ActiveReports 9.0 セクションレポート(コード)]を選択し、名前を「rptModifyDS」に変更します。
- [追加]ボタンをクリックします。
詳細は、「プロジェクトにレポートを追加する」を参照してください。
レポートを設計時のデータソースに接続する
 |
ヒント: 実行時にデータソースを変更しても、設計時に設定したデータソースを使用して[レポートエクスプローラ]からレポート上にバウンドフィールドをドラッグすることができます。
|
- detailセクションでは、データソースアイコンをクリックします。

- [レポートデータソース]ダイアログでは、[OLE DB]タブの[接続文字列]の横にある[作成]ボタンをクリックします。
- [データリンクプロパティ]ウィンドウでは、[プロバイダー]に[Microsoft Jet 4.0 OLE DB Provider]を選択し、「次へ」ボタンをクリックし、[接続]タブへ移動します。
- データベースを参照するには(...)をクリックし、Nwind.mdbへのアクセスパスを参照します。アクセスパスを選択したら、[開く]をクリックします。
- [接続のテスト]をクリックし、データベースとの接続が成功したかどうかをチェックします。
- [OK]をクリックし、[データリンクプロパティ]ウィンドウを閉じ、[レポートデータソース]ダイアログに戻ります。接続文字列が自動的に表示されることを確認します。
-
[OLE DB]タブの[クエリ]フィールドに次のSQLクエリを入力します。
SQLクエリ |
コードのコピー
|
SELECT * FROM Products |
- [OK]をクリックします。
レポートのレイアウトを作成する
- レポートのデザイナ面にあるdetailセクションを選択し、[プロパティ]ウィンドウからCanShrinkプロパティを「True」に設定します。
- 「レポートエクスプローラ」では、[フィールド]ノードを展開し、[バウンドフィールド]ノードを展開します。以下のフィールドをdetailセクションにドラッグし、各テキストボックスのプロパティを以下のように設定します。
TextBox1 (ProductID)
プロパティ名 |
値 |
Location |
0, 0 in |
Size |
0.5, 0.2 in |
TextBox2 (ProductName)
プロパティ名 |
値 |
Location |
0.6, 0 in |
Size |
2.8, 0.2 in |
TextBox3 (UnitsInStock)
プロパティ名 |
値 |
Location |
3.5, 0 in |
Size |
0.5, 0.2 in |
Alignment |
Right |
TextBox4 (UnitsOnOrder)
プロパティ名 |
値 |
Location |
4.1, 0 in |
Size |
0.5, 0.2 in |
Alignment |
Right |
TextBox5 (UnitPrice)
プロパティ名 |
値 |
Location |
4.7, 0 in |
Size |
0.9, 0.2 in |
Alignment |
Right |
OutputFormat |
Currency |
データベースへのパスを設定する
 |
メモ: 次の手順は、レジストリ配下にパスが格納されている事を前提にしています。 |
- rptModifyDSのデザイナウィンドウを右クリックし、[コードの表示]を選択してレポートのコードを表示します。
- レジストリからサンプルデータベースへのパスを取得するために、以下のコードを追加します。
Visual Basic
Visual Basicコード (コードの先頭に張り付けます) |
コードのコピー
|
Imports Microsoft.Win32
|
Visual Basicコード (レポートクラス内に貼り付けます) |
コードのコピー
|
Private Function getDatabasePath() As String
Dim regKey As RegistryKey
regKey = Registry.LocalMachine
regKey = regKey.CreateSubKey("SOFTWARE\GrapeCity\ActiveReports 9")
getDatabasePath = CType(regKey.GetValue(""), String)
End Function
|
C#
C#コード (コードの先頭に貼り付けます) |
コードのコピー
|
using Microsoft.Win32;
|
C#コード (レポートクラス内に貼り付けます) |
コードのコピー
|
private string getDatabasePath()
{
RegistryKey regKey = Registry.LocalMachine;
regKey = regKey.CreateSubKey("SOFTWARE\\GrapeCity\\ActiveReports 9");
return ((string)(regKey.GetValue("")));
}
|
実行時にデータソースを変更するためにコードを追加する
実行時にデータソースを変更します。
- rptModifyDSの「デザイナ面」のグレーの領域をダブルクリックします。ReportStartイベントのイベント処理メソッドを作成します。
- 実行時にデータソースを変更するために、以下のコードを追加します。
Visual Basic
Visual Basicコード (ReportStartイベントの上に貼り付けます) |
コードのコピー
|
Dim conn As System.Data.OleDb.OleDbConnection
Dim reader As System.Data.OleDb.OleDbDataReader
|
Visual Basicコード (ReportStartイベント内に貼り付けます) |
コードのコピー
|
Dim dbPath As String = getDatabasePath()
Dim connString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + dbPath + "\\NWIND.mdb"
conn = New System.Data.OleDb.OleDbConnection(connString)
Dim cmd As New System.Data.OleDb.OleDbCommand("SELECT * FROM Products WHERE UnitPrice = 1540", conn)
conn.Open()
reader = cmd.ExecuteReader()
Me.DataSource = reader
|
C#
C#コード (ReportStartイベントの上に貼り付けます) |
コードのコピー
|
private static System.Data.OleDb.OleDbConnection conn;
private static System.Data.OleDb.OleDbDataReader reader;
|
C#コード (ReportStartイベント内に貼り付けます) |
コードのコピー
|
string dbPath = getDatabasePath();
string connString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + dbPath + "\\NWIND.mdb";
conn = new System.Data.OleDb.OleDbConnection(connString);
System.Data.OleDb.OleDbCommand cmd = new System.Data.OleDb.OleDbCommand("SELECT * FROM Products WHERE UnitPrice = 1540", conn);
conn.Open();
reader = cmd.ExecuteReader();
this.DataSource = reader;
|
データ接続を切るためにコードを追加する
Visual Basic
- rptModifyDSのコードビューの上部左側にあるドロップダウンキーをクリックし、rptModifyDS イベントを選択します。
- コードビューの上部右側のドロップダウンキーをクリックし、ReportEndを選択し、レポートのReportEndイベントのイベント処理メソッドを作成します。
- ハンドラに以下のコードを追加し、データ接続を切ります。
Visual Basicコード (ReportEndイベント内に貼り付けます) |
コードのコピー
|
reader.Close()
conn.Close()
|
C#
- rptModifyDSの「デザイナ面」より、グレーの領域をクリックし、rptModifyDSを選択します。
- プロパティウィンドウにあるイベントアイコンをクリックし、レポートのイベントの一覧を表示します。
- ReportEndイベントをダブルクリックし、レポートのReportEndイベントのイベント処理メソッドを作成します。
- ハンドラに以下のコードを追加し、データ接続を切ります。
C#コード (ReportEndイベント内に貼り付けます) |
コードのコピー
|
reader.Close();
conn.Close();
|
レポートを表示する
関連トピック