レポートのデータソース(接続文字列やSQL文など)は、動的に変更できますか?

文書番号 : 33974     文書種別 : 使用方法     登録日 : 2012/12/19     最終更新日 : 2014/03/10
文書を印刷する
対象製品
ActiveReports for .NET 7.0J
詳細
レポートのデータソース(接続文字列やSQL文など)を動的に設定する方法は、レポートの形式によって異なります。以下の内容をご覧ください。
  1. セクションレポートの場合
  2. ページレポートの場合


セクションレポートの場合

セクションレポートのデータソースは、DataSourceプロパティから設定することが可能です。

レポートの作成前(Runメソッド実行前またはReportStartイベント内)にこのプロパティを更新することで、レポートのデータソースを動的に変更することが可能です。具体的な方法については、製品ヘルプの以下の内容をご参照ください。

PowerTools ActiveReports for .NET 7.0J
 - ActiveReportsユーザーガイド
  - 基本操作
   - セクションレポートの基本操作
    - セクションレポートでのデータ連結
     - 実行時にデータソースを変更する
  - サンプルとチュートリアル
   - チュートリアル
    - セクションレポートのチュートリアル
     - データ
      - 実行時にレポートデータソースを変更する
  - よくある質問
   - セクションレポート
    - データベース
     - 「ODBCデータ ソースを使用する
     - 「レポートのデータソースにストアドプロシージャを使用する
     - 「CSVや配列データを元にレポートを作成する
    - Web
     - 「Web上で動的なレポートを作成する(1)
     - 「Web上で動的なレポートを作成する(2)
   - 共通の項目(ページレポートとセクションレポート)
    - データベース
     - 「Oracle データ ソースを使用する

また、製品ヘルプの以下のトピックで解説している付属のサンプルでは、DataReaderやDataTableなど、さまざまな形式のデータクラスをレポートのデータソースに設定する方法を紹介しています。あわせてご参照ください。

PowerTools ActiveReports for .NET 7.0J
 - ActiveReportsユーザーガイド
  - サンプルとチュートリアル
   - サンプル
    - セクションレポートのサンプル(Standard)
     - Data
      - データバウンド サンプル


ページレポートの場合

ページレポートのデータソースを動的に設定する具体的な方法については、製品ヘルプの以下の内容をご参照ください。

PowerTools ActiveReports for .NET 7.0J
 - ActiveReportsユーザーガイド
  - 基本操作
   - ページレポートの基本操作
    - データ連結
     - 実行時にレポートとデータソースの連結
      - 実行時にOleDBデータソースと連結する

上記の製品ヘルプでは実行時に新規のデータソースを設定する方法をご紹介しておりますが、デザイン時に設定したデータソースを、実行時に変更することも可能です。以下のサンプルコードは、デザイン時に設定したデータソースの接続文字列と、データセットのSQL文を変更する一例です。

◆サンプルコード(VB.NET)
Private Sub Form1_Load(...) Handles MyBase.Load
  ' ページレポートを作成します。
  Dim rpt As New GrapeCity.ActiveReports.PageReport()
  ' レポート定義のファイルをロードします。
  rpt.Load(New System.IO.FileInfo("PageReport1.rdlx"))

  ' 接続文字列を変更します
  rpt.Report.DataSources(0).ConnectionProperties.DataProvider = "OLEDB"
  rpt.Report.DataSources(0).ConnectionProperties.ConnectString _
    = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:/Reels.mdb"

  ' 変更するSQL文を定義します
  Dim tmpQuery As [String] = "Select Top 10 * From Movie"
  ' SQL文を変更します
  rpt.Report.DataSets(0).Query.CommandText = _
    GrapeCity.ActiveReports.Expressions.ExpressionInfo.Parse(tmpQuery, _
      GrapeCity.ActiveReports.Expressions.ExpressionResultType.[String])

  Dim pageDocument As New GrapeCity.ActiveReports.Document.PageDocument(rpt)
  Viewer1.LoadDocument(pageDocument)
End Sub


◆サンプルコード(C#)
private void Form1_Load(...)
{
  // ページレポートを作成します。
  GrapeCity.ActiveReports.PageReport rpt = new GrapeCity.ActiveReports.PageReport();
  // レポート定義のファイルをロードします。
  rpt.Load(new System.IO.FileInfo("PageReport1.rdlx"));

  // 接続文字列を変更します
  rpt.Report.DataSources[0].ConnectionProperties.DataProvider = "OLEDB";
  rpt.Report.DataSources[0].ConnectionProperties.ConnectString =
    @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:/Reels.mdb";

  // 変更するSQL文を定義します
  String tmpQuery = "Select Top 10 * From Movie";
  // SQL文を変更します
  rpt.Report.DataSets[0].Query.CommandText =
    GrapeCity.ActiveReports.Expressions.ExpressionInfo.Parse(tmpQuery,
      GrapeCity.ActiveReports.Expressions.ExpressionResultType.String);

  GrapeCity.ActiveReports.Document.PageDocument pageDocument =
    new GrapeCity.ActiveReports.Document.PageDocument(rpt);
  viewer1.LoadDocument(pageDocument);
}


なお、データソースやデータセットの内容を変更することにより、使用するフィールドが変更される場合は、使用するフィールドを新たに定義する必要があります。ご注意ください。
関連情報
キーワード
HowTo データ