ActiveReports for .NET 18.0J
実行時にレポートデータソースを変更する
ActiveReportsユーザーガイド > サンプルとチュートリアル > チュートリアル > セクションレポートのチュートリアル > データ > 実行時にレポートデータソースを変更する

ActiveReportsでは、ローカルコンピュータのサンプルデータベースの場所に基づいて、レポートのデータソースを実行時に変更できます。

このトピックでは、以下のタスクを行います。

メモ: このチュートリアルはNWindデータベース(Nwind.mdb)を使用しています。使用にはNorthWindデータベース(..\ActiveReportsNET18\Samples\Data)へのアクセス権限が必要です。

チュートリアルを完了すると、次のレポートが作成されます。

デザイン時のレイアウト

実行時のレイアウト

Visual StudioプロジェクトにActiveReportを追加する

  1. Visual Studioで新規プロジェクトを開きます。
  2. [プロジェクト]メニューから[新しい項目の追加]を選択します。
  3. [新しい項目を追加]ダイアログから[ActiveReports 18.0 セクションレポート(コード)]を選択し、名前を「rptModifyDS」に変更します。
  4. [追加]ボタンをクリックします。

詳細については、「クイックスタート」を参照してください。

レポートをデザイン時のデータソースに接続する

ヒント: 実行時にデータソースを変更しても、デザイン時に設定したデータソースを使用して[レポートエクスプローラ]からレポート上にバウンドフィールドをドラッグすることができます。

  1. detailセクションで、データソースアイコンをクリックします。
  2. [レポートデータソース]ダイアログで、[OLE DB]タブの[接続文字列]の横にある[作成]ボタンをクリックします。
  3. [データリンクプロパティ]ウィンドウで、[プロバイダー][Microsoft Jet 4.0 OLE DB Provider]を選択し、「次へ」ボタンをクリックし、[接続]タブへ移動します。
  4. データベースを参照するには<...>をクリックし、Nwind.mdbへのアクセスパスを参照します。アクセスパスを選択したら、[開く]をクリックします。
  5. [接続のテスト]をクリックし、データベースとの接続が成功したかどうかをチェックします。
  6. [OK]をクリックし、[データリンクプロパティ]ウィンドウを閉じ、[レポートデータソース]ダイアログに戻ります。接続文字列が自動的に表示されることを確認します。
  7. [OLE DB]タブの[クエリ]フィールドに次のSQLクエリを入力します。
    SQLクエリ
    コードのコピー
    SELECT * FROM Products
  8. [OK]をクリックします。

レポートのレイアウトを作成する

  1. レポートのデザイナ面にあるdetailセクションを選択し、[プロパティ]ウィンドウからCanShrinkプロパティを「True」に設定します。
  2. レポートエクスプローラ]で、[フィールド]ノードを展開し、[バウンドフィールド]ノードを展開します。以下のフィールドを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

データベースへのパスを設定する

メモ: 次の手順は、レジストリ配下にパスが格納されている事を前提にしています。
  1. rptModifyDSのデザイナウィンドウを右クリックし、[コードの表示]を選択してレポートのコードを表示します。
  2. レジストリからサンプルデータベースへのパスを取得するために、以下のコードを追加します。

    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 18")
       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 18");
       return ((string)(regKey.GetValue("")));
    }
    

実行時にデータソースを変更するためにコードを追加する

実行時にデータソースを変更します。

  1. rptModifyDSのデザイナ面のグレーの領域をダブルクリックします。ReportStartイベントのイベント処理メソッドを作成します。
  2. 実行時にデータソースを変更するために、以下のコードを追加します。

    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

  1. rptModifyDSのコードビューの上部左側にあるドロップダウンキーをクリックし、rptModifyDS イベントを選択します。
  2. コードビューの上部右側のドロップダウンキーをクリックし、ReportEndを選択し、レポートのReportEndイベントのイベント処理メソッドを作成します。
  3. ハンドラに以下のコードを追加し、データ接続を切ります。
    Visual Basicコード (ReportEndイベント内に貼り付けます)
    コードのコピー
    reader.Close()
    conn.Close()
    

C#

  1. rptModifyDSの「デザイナ面」より、グレーの領域をクリックし、rptModifyDSを選択します。
  2. プロパティウィンドウにあるイベントアイコンをクリックし、レポートのイベントの一覧を表示します。
  3. ReportEndイベントをダブルクリックし、レポートのReportEndイベントのイベント処理メソッドを作成します。
  4. ハンドラに以下のコードを追加し、データ接続を切ります。
    C#コード (ReportEndイベント内に貼り付けます)
    コードのコピー
    reader.Close();
    conn.Close();
    

レポートを表示する

または

関連トピック