レポートを呼び出すコード側からレポートに値を渡す方法は?

文書番号 : 37783     文書種別 : 使用方法     登録日 : 2016/04/28     最終更新日 : 2016/04/28
文書を印刷する
対象製品
ActiveReports for .NET 9.0J
詳細
レポートの外部からレポートに値を渡す方法は、レポートの形式によって異なります。
  1. セクションレポートの場合
  2. ページレポート/RDLレポートの場合


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

セクションレポートの場合、以下のような方法が考えられます。
  1. レポート外のイベントからレポート内のコントロールを操作する方法
  2. レポート内で定義したPublic変数に値を渡す方法
  3. レポート内でコンストラクタを定義して値を渡す方法
  4. パラメータを使用する方法

  1. レポート外のイベントからレポート内のコントロールを操作する方法
    SectionsおよびControlsクラスを使用し、オブジェクトを適切な型にキャストすることで、レポート外のイベントからレポート内のコントロールに直接アクセスすることが可能です。

    ◆サンプルコード(VB.NET)
    Dim rpt As New SectionReport1()

    ' ページヘッダ上の「TextBox1」に値を設定します。
    ' ※この時、必ず適切な型にキャストする必要があります。

    DirectCast(rpt.Sections("PageHeader").Controls("TextBox1"), _
      GrapeCity.ActiveReports.SectionReportModel.Label).Text = "Sample Text"

    ' レポートを実行します。
    rpt.Run()

    ◆サンプルコード(C#)
    SectionReport1 rpt = new SectionReport1();

    // ページヘッダ上の「TextBox1」に値を設定します。
    // ※この時、必ず適切な型にキャストする必要があります。

    ((GrapeCity.ActiveReports.SectionReportModel.Label)
      (rpt.Sections["PageHeader"].Controls["TextBox1"])).Text = "Sample Text";

    // レポートを実行します。
    rpt.Run();


  2. レポート内で定義したPublic変数に値を渡す方法
    レポート内でPublic変数を定義し、生成したレポートインスタンスに値をセットして渡す方法です。

    ◆サンプルコード(VB.NET)
    【レポート内のコード】
    Public strParam As String

    Private Sub SectionReport1_ReportStart(...) Handles MyBase.ReportStart
      ' 渡された文字列をレポート上のTextBox1にセットします。
      Me.TextBox1.Text = strParam
    End Sub
    --------------------------------------------------------------------------------------------------------------
    【レポートを呼び出す側のコード】

    Dim rpt As SectionReport1 = New SectionReport1()

    ' 出力したいデータをレポートのPublic変数に設定します。
    rpt.strParam = "Sample Text"

    ' レポートを実行します。
    rpt.Run()

    ◆サンプルコード(C#)
    【レポート内のコード】
    public string strParam;

    private void SectionReport1_ReportStart(...)
    {
      // 渡された文字列をレポート上のTextBox1にセットします。
      this.TextBox1.Text = strParam;
    }
    --------------------------------------------------------------------------------------------------------------
    【レポートを呼び出す側のコード】

    SectionReport1 rpt = new SectionReport1();

    // 出力したいデータをレポートのPublic変数に設定します。
    rpt.strParam = "Sample Text";

    // レポートを実行します。
    rpt.Run();


  3. レポート内でコンストラクタを定義して値を渡す方法
    レポート内でコンストラクタを定義し、レポートインスタンス生成時に値を渡す方法です。

    ◆サンプルコード(VB.NET)
    【レポート内のコード】
    Public Class SectionReport1
      Private myStrInput As String

      ' 独自のコンストラクタを定義します。
      Public Sub New(ByVal StrInput As String)

        ' この呼び出しはデザイナーで必要です。
        InitializeComponent()

        ' 引数として渡された値を変数に格納します。
        myStrInput = StrInput
      End Sub

      Private Sub SectionReport1_ReportStart(....) Handles MyBase.ReportStart
        ' コンストラクタの引数として渡された値をレポート上のTextBox1にセットします。
        Me.TextBox1.Text = myStrInput
      End Sub
    End Class
    --------------------------------------------------------------------------------------------------------------
    【レポートを呼び出す側のコード】

    ' レポートに渡したい値をコンストラクタの引数に設定します。
    Dim rpt As New SectionReport1("Sample Text")

    ' レポートを実行します。
    rpt.Run()

    ◆サンプルコード(C#)
    【レポート内のコード】
    public partial class SectionReport1 : GrapeCity.ActiveReports.SectionReport
    {
      private string myStrText;

      // 独自のコンストラクタを定義します。
      public SectionReport1(string StrText)
      {
        // デザイナー サポートに必要なメソッドです。
        InitializeComponent();

        // 引数として渡された値を変数に格納します。
        myStrText = StrText;
      }

      private void SectionReport1_ReportStart(...)
      {
        // コンストラクタの引数として渡された値をレポート上のTextBox1にセットします。
        this.TextBox1.Text = myStrText;
      }
    }
    --------------------------------------------------------------------------------------------------------------
    【レポートを呼び出す側のコード】

    // レポートに渡したい値をコンストラクタの引数に設定します。
    SectionReport1 rpt = new SectionReport1("Sample Text");

    // レポートを実行します。
    rpt.Run();


  4. パラメータを使用する方法
    レポート内にパラメータを定義し、それを経由して値を渡す方法です。具体的には、以下のような手順になります。

    1. ソリューションエクスプローラからパラメータを追加します。

      ◆パラメータの定義例
      プロパティ設定例
      (Name)Parameter1
      PromptUserFalse(※)
      TypeString
      PromptUserプロパティ(パラメータ入力ダイアログを表示するかどうかを決定するプロパティ)は、必ず"False"に設定してください。

      なお、セクションレポートにおける、パラメータの使用方法や詳細については、製品ヘルプの以下のトピックをご覧ください。

      ActiveReportsユーザーガイド
       - 概念
        - 対話的な機能
         - パラメータ
       - 基本操作
        - セクションレポートの基本操作
         - パラメータの追加

    2. TextBoxやLabelコントロールのDataFieldプロパティを以下のように設定することで、パラメータに設定された値がそのコントロールに表示されます。

      ◆DataFieldプロパティの設定例
      =param:Parameter1

      なお、以下のようにコード内でパラメータを参照し、コントロールに設定することも可能です。

      ◆サンプルコード(VB.NET)
      Private Sub SectionReport1_ReportStart(...) Handles MyBase.ReportStart
        ' パラメータに設定された文字列をレポート上のTextBox1にセットします。
        Me.TextBox1.Text = Me.Parameters("Parameter1").Value
      End Sub

      ◆サンプルコード(C#)
      private void SectionReport1_ReportStart(...)
      {
        // パラメータに設定された文字列をレポート上のTextBox1にセットします。
        this.TextBox1.Text = this.Parameters["Parameter1"].Value;
      }

    3. レポートを呼び出すコード側で、レポートのパラメータに渡したい値を設定します。

      ◆サンプルコード(VB.NET)
      Dim rpt As SectionReport1 = New SectionReport1()

      ' 出力したいデータをレポートのパラメータに設定します。
      rpt.Parameters("Parameter1").Value = "Sample Text"

      ' レポートを実行します。
      rpt.Run()

      ◆サンプルコード(C#)
      SectionReport1 rpt = new SectionReport1();

      // 出力したいデータをレポートのパラメータに設定します。
      rpt.Parameters["Parameter1"].Value = "Sample Text";

      // レポートを実行します。
      rpt.Run();



ページレポート/RDLレポートの場合

ページレポート/RDLレポートの場合、パラメータを使用することでレポート外部のコードからレポートに値を渡すことが可能です。具体的には、以下のような手順になります。
  1. ソリューションエクスプローラからパラメータを追加します。

    ◆パラメータの設定例
    設定項目設定例
    名前ReportParameter1
    データタイプString
    非表示オン(※)
    「非表示」チェックボックスは、必ずオンに設定してください。

    なお、ページレポート/RDLレポートにおける、パラメータの使用方法や詳細については、製品ヘルプの以下のトピックをご覧ください。

    ActiveReportsユーザーガイド
     - 概念
      - 対話的な機能
       - パラメータ
     - 基本操作
      - ページレポート/RDLレポートの基本操作
       - パラメータの追加
        - 非表示のパラメータの設定

  2. TextBoxコントロールのValueプロパティに以下のような式を設定することで、パラメータに設定された値がそのコントロールに表示されます。

    ◆Valueプロパティの設定例
    =Parameters!ReportParameter1.Value

  3. レポートを呼び出すコード側で、レポートのパラメータに渡したい値を設定します。

    ◆サンプルコード(VB.NET)
    ' レポートオブジェクトを生成し、レポートファイルをロードします。
    Dim pRep As New GrapeCity.ActiveReports.PageReport(New System.IO.FileInfo("PageReport1.rdlx"))
    Dim pDoc As New GrapeCity.ActiveReports.Document.PageDocument(pRep)

    ' 出力したいデータをレポートのパラメータに設定します。
    pDoc.Parameters("ReportParameter1").CurrentValue = "Sample Text"

    ' レポートをプレビュー表示します。
    Me.Viewer.LoadDocument(pDoc)

    ◆サンプルコード(C#)
    // レポートオブジェクトを生成し、レポートファイルをロードします。
    GrapeCity.ActiveReports.PageReport pRep
      = new GrapeCity.ActiveReports.PageReport(new System.IO.FileInfo("PageReport1.rdlx"));
    GrapeCity.ActiveReports.Document.PageDocument pDoc
      = new GrapeCity.ActiveReports.Document.PageDocument(pRep);

    // 出力したいデータをレポートのパラメータに設定します。
    pDoc.Parameters["ReportParameter1"].CurrentValue = "Sample Text";

    // レポートをプレビュー表示します。
    this.viewer1.LoadDocument(pDoc);
関連情報
キーワード
HowTo データ