レポートを呼び出すコード側からレポートに値を渡す方法は?
対象製品
ActiveReports for .NET 9.0J
詳細
レポートの外部からレポートに値を渡す方法は、レポートの形式によって異なります。
セクションレポートの場合
セクションレポートの場合、以下のような方法が考えられます。- レポート外のイベントからレポート内のコントロールを操作する方法
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(); - レポート内で定義した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(); - レポート内でコンストラクタを定義して値を渡す方法
レポート内でコンストラクタを定義し、レポートインスタンス生成時に値を渡す方法です。
◆サンプルコード(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(); - パラメータを使用する方法
レポート内にパラメータを定義し、それを経由して値を渡す方法です。具体的には、以下のような手順になります。
- ソリューションエクスプローラからパラメータを追加します。
◆パラメータの定義例
プロパティ 設定例 (Name) Parameter1 PromptUser False(※) Type String ※ PromptUserプロパティ(パラメータ入力ダイアログを表示するかどうかを決定するプロパティ)は、必ず"False"に設定してください。
なお、セクションレポートにおける、パラメータの使用方法や詳細については、製品ヘルプの以下のトピックをご覧ください。
ActiveReportsユーザーガイド
- 概念
- 対話的な機能
- パラメータ
- 基本操作
- セクションレポートの基本操作
- パラメータの追加 - 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;
} - レポートを呼び出すコード側で、レポートのパラメータに渡したい値を設定します。
◆サンプルコード(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レポートの場合、パラメータを使用することでレポート外部のコードからレポートに値を渡すことが可能です。具体的には、以下のような手順になります。- ソリューションエクスプローラからパラメータを追加します。
◆パラメータの設定例
設定項目 設定例 名前 ReportParameter1 データタイプ String 非表示 オン(※) ※ 「非表示」チェックボックスは、必ずオンに設定してください。
なお、ページレポート/RDLレポートにおける、パラメータの使用方法や詳細については、製品ヘルプの以下のトピックをご覧ください。
ActiveReportsユーザーガイド
- 概念
- 対話的な機能
- パラメータ
- 基本操作
- ページレポート/RDLレポートの基本操作
- パラメータの追加
- 非表示のパラメータの設定 - TextBoxコントロールのValueプロパティに以下のような式を設定することで、パラメータに設定された値がそのコントロールに表示されます。
◆Valueプロパティの設定例
=Parameters!ReportParameter1.Value - レポートを呼び出すコード側で、レポートのパラメータに渡したい値を設定します。
◆サンプルコード(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 データ