メニュー最初の一歩基本的な仕組み機能サンプル
プログラム仕様デザイン仕様機能拡張その他関連製品開発・運営会社 |
Reportの仕様Reportは帳票そのものを表すオブジェクトです。 RapidReportを用いたアプリケーションの開発を行うには、 まずはこのReportオブジェクトを生成する必要があります。 Reportオブジェクトの生成Reportオブジェクトを生成するためには、ReportDesignオブジェクトが必要です。 ReportDesignは帳票定義ファイルの内容を元に作られるオブジェクトで、 以下のコンストラクタで生成することができます。
// C#
ReportDesign reportDesign = new ReportDesign(Json.Read("example.rrpt"));
ReportDesign reportDesign = new ReportDesign(Json.Read("example.rrpt"), reportSetting);
' VisualBasic
Dim reportDesign As New ReportDesign(Json.Read("example.rrpt"))
Dim reportDesign As New ReportDesign(Json.Read("example.rrpt"), reportSetting)
// Java ReportDesign reportDesign = new ReportDesign(ReadUtil.readJson("example.json")); ReportDesign reportDesign = new ReportDesign(ReadUtil.readJson("example.json"), reportSetting); 1つ目の引数に帳票定義ファイルを読み込んで得たオブジェクトを渡します。 2つ目の引数にはReportSettingというオブジェクトを渡します。 ReportSettingは帳票の設定を行うためのオブジェクトです。その詳細については後述します。 デフォルトの設定のままでよいのであれば、この引数は省略できます。 ReportDesignは、帳票定義JSON内のオブジェクトが持つプロパティに対応したメンバを持ちます。 例えば、ReportDesignオブジェクトには、Caption, Id, Paperなどのメンバがあり、 それぞれに対応するプロパティの値が格納されています。 ReportDesignオブジェクトの内容は動的に変更することもできます。 例えば以下のように書くことで、実行時に余白を変更することができます。
// C#
reportDesign.PaperDesign.Margin.Left = 50;
reportDesign.PaperDesign.Margin.Right = 50;
' VisualBasic
reportDesign.PaperDesign.Margin.Left = 50
reportDesign.PaperDesign.Margin.Right = 50
// Java
reportDesign.paperDesign.margin.left = 50f;
reportDesign.paperDesign.margin.right = 50f;
ReportDesignオブジェクトが生成できたらReportオブジェクトを生成します。 コンストラクタは以下のようになります。
// C#
Report report = new Report(reportDesign);
Report report = new Report(reportDesign, customizer);
' VisualBasic
Dim report As New Report(reportDesign)
Dim report As New Report(reportDesign, customizer)
// Java
Report report = new Report(reportDesign);
Report report = new Report(reportDesign, customizer);
1つ目の引数にreportDesignオブジェクトを渡します。 2つ目の引数にはカスタマイザというオブジェクトを渡します。 カスタマイザは帳票に対して動的変更を加えるためのオブジェクトで、 「カスタマイザの仕様」に詳しい説明があります。 動的なカスタマイズを行わないのであれば、この引数は省略できます。 Reportオブジェクトのコンストラクタには帳票定義JSONのオブジェクトを直接渡すこともできます。
// C#
Report report = new Report(Json.Read("example.rrpt"));
Report report = new Report(Json.Read("example.rrpt"), reportSetting);
Report report = new Report(Json.Read("example.rrpt"), reportSetting, customizer);
' VisualBasic
Dim report As New Report(Json.Read("example.rrpt"))
Dim report As New Report(Json.Read("example.rrpt"), reportSetting)
Dim report As New Report(Json.Read("example.rrpt"), reportSetting, customizer)
// Java
Report report = new Report(ReadUtil.readJson("example.json"));
Report report = new Report(ReadUtil.readJson("example.json"), reportSetting);
Report report = new Report(ReadUtil.readJson("example.json"), reportSetting, customizer);
このように書いた場合は、Reportコンストラクタの内部でReportDesignオブジェクトが自動的に生成されます。 ReportSetting先ほどの説明で触れたReportSettingオブジェクトには、 帳票の動作を制御するための設定項目がメンバとして含まれています。 その一覧を以下に示します。
IReportLoggerRapidReportは、帳票出力の途中でエラーが発生したとしても、 処理の中断をせずに完遂するよう動作します。 例えば、式の記述を誤って文法エラーや間違った列名が含まれていたとしても、 その式の値はNULLとしてそのまま処理を続行します。 出力処理の途中で発生したエラーの情報は、 IReportLoggerというインターフェースの実装クラスを用意し、 ReportSettingに設定することで収集することができます。 IReportLoggerインターフェースは以下のように定義されています。
' .NET (VisualBasic)
Public Interface IReportLogger
Sub EvaluateError(ByVal exp As String, ByVal ex As EvalException)
Sub ElementRenderingError( _
ByVal contentDesign As ContentDesign, _
ByVal design As ElementDesign, _
ByVal ex As Exception)
Sub UnknownFieldError(ByVal ex As UnknownFieldException)
End Interface
// Java
public static interface ILogger{
void evaluateError(String exp, EvalException ex);
void elementRenderingError(
ContentDesign contentDesign,
ElementDesign elementDesign,
Throwable ex);
void unknownFieldError(UnknownFieldException ex);
}
EvaluateErrorメソッドは、式の評価中に例外が発生した場合に呼ばれます。 ElementRenderingErrorメソッドは、 ElementRendererによる描画処理中に例外が発生した場合に呼ばれます。 UnknownFieldErrorメソッドは、 データソースに対して不明な列への参照が行われた場合に呼ばれます。 具体的には、データソースのGetメソッド内でUnknownFieldException例外が発生した場合に呼ばれます。 C#でのロガーのサンプルコードC#で、帳票の出力処理中に発生した例外の内容を、標準出力へ出力するロガーのサンプルコードを以下に示します。 public class MyReportLogger : IReportLogger { // 式の評価中に例外が発生すると呼ばれます。 public void EvaluateError(string exp, EvalException ex) { Console.Out.WriteLine(ex.GetType().ToString() + " : " + ex.Message); } // 要素の描画中に例外が発生すると呼ばれます。 public void ElementRenderingError( ContentDesign contentDesign, ElementDesign design, Exception ex) { Console.Out.WriteLine(ex.GetType().ToString() + " : " + ex.Message); } // 不明な列への参照が行われると呼ばれます。 public void UnknownFieldError(UnknownFieldException ex) { Console.Out.WriteLine(ex.GetType().ToString() + " : " + ex.Message); } } このロガーは、Reportオブジェクトを生成する際に以下のように指定することで利用できます。
ReportSetting setting = new ReportSetting();
setting.Logger = new MyReportLogger(); // ロガーを設定します。
Report report = new Report(Json.Read("example.rrpt"), setting);
VisualBasicでのロガーのサンプルコードVisualBasicで、帳票の出力処理中に発生した例外の内容を、標準出力へ出力するロガーのサンプルコードを以下に示します。 Public Class MyReportLogger Implements IReportLogger ' 式の評価中に例外が発生すると呼ばれます。 Public Sub EvaluateError(exp As String, ex As EvalException) _ Implements IReportLogger.EvaluateError Console.Out.WriteLine(ex.GetType().ToString() & " : " & ex.Message) End Sub ' 要素の描画中に例外が発生すると呼ばれます。 Public Sub ElementRenderingError( _ contentDesign As ContentDesign, design As ElementDesign, ex As Exception) _ Implements IReportLogger.ElementRenderingError Console.Out.WriteLine(ex.GetType().ToString() & " : " & ex.Message) End Sub ' 不明な列への参照が行われると呼ばれます。 Public Sub UnknownFieldError(ex As UnknownFieldException) _ Implements IReportLogger.UnknownFieldError Console.Out.WriteLine(ex.GetType().ToString() & " : " & ex.Message) End Sub End Class このロガーは、Reportオブジェクトを生成する際に以下のように指定することで利用できます。
Dim setting As New ReportSetting()
setting.Logger = New MyReportLogger() ' ロガーを設定します。
Dim report As New Report(Json.Read("example.rrpt"), setting)
JavaでのロガーのサンプルコードJavaで、帳票の出力処理中に発生した例外の内容を、標準出力へ出力するロガーのサンプルコードを以下に示します。 public class MyReportLogger implements IReportLogger { // 式の評価中に例外が発生すると呼ばれます。 public void evaluateError(String exp, EvalException ex) { System.out.println(ex.getClass().toString() + " : " + ex.getMessage()); } // 要素の描画中に例外が発生すると呼ばれます。 public void elementRenderingError( ContentDesign contentDesign, ElementDesign design, Throwable ex) { System.out.println(ex.getClass().toString() + " : " + ex.getMessage()); } // 不明な列への参照が行われると呼ばれます。 public void unknownFieldError(UnknownFieldException ex) { System.out.println(ex.getClass().toString() + " : " + ex.getMessage()); } } このロガーは、Reportオブジェクトを生成する際に以下のように指定することで利用できます。
ReportSetting setting = new ReportSetting();
setting.Logger = new MyReportLogger(); // ロガーを設定します。
Report report = new Report(ReadUtil.readJson("example.rrpt"), setting);
GlobalScopeReportオブジェクトのメンバとして用意されたGlobalScopeというハッシュにデータを登録しておくと、 帳票内のglobal.[キー]という式から得ることができます。
// C#
report.GlobalScope.Add("today", DateTime.Today);
' VisualBasic
report.GlobalScope.Add("today", Today)
// Java
report.globalScope.put("today", new Date());
上記のように書いた場合、global.todayという式で印刷を実行した日付が得られます。 AddSubPagesAddSubPagesメソッドを呼ぶことで、Reportにサブページを割り当てます。 1つ目の引数にサブページのキー、2つ目の引数にサブページとなるReportPagesオブジェクトを渡します。
// C#
ReportPages subPages = subReport.GetPages();
report.AddSubPages("subpage", subPages);
report.Fill(new SubPageDataSource(subPages, "group_id", "page1", "page2"));
' VisualBasic
Dim subPages As ReportPages = subReport.GetPages()
report.AddSubPages("subpage", subPages)
report.Fill(New SubPageDataSource(subPages, "group_id", "page1", "page2"))
// Java
ReportPages subPages = subReport.getPages();
report.addSubPages("subpage", subPages);
report.fill(new SubPageDataSource(subPages, "group_id", "page1", "page2"));
サブページの詳しい利用法については、機能サンプルの「サブページ」をご覧ください。 AddSharedContentAddSharedContentメソッドはクラスメソッドで、コンテントを共有コンテントへと登録します。 1つ目の引数に共有コンテントのID(識別子)を指定し、2つ目の引数に登録するコンテントを含むReportDesignオブジェクトを渡します。
// C#
ReportDesign sharedReport = new ReportDesign(Json.Read("shared.rrpt"));
Report.AddSharedContent("company_info", sharedReport);
' VisualBasic
Dim sharedReport As New ReportDesign(Json.Read("shared.rrpt"))
Report.AddSharedContent("company_info", sharedReport)
// Java
ReportDesign sharedReport = new ReportDesign(ReadUtil.readJson("shared.rrpt"));
Report.addSharedContent("company_info", sharedReport);
このメソッドは、指定したReportDesignオブジェクト内から指定したID(識別子)を持つコンテントを検索して見つかった場合、 それを共有コンテントへとIDをキーにして登録します。 すでに存在するIDが指定された場合、登録されるコンテントは上書きされます。 共有コンテントは、コンテントの差し込み機能から利用されます。 共有コンテントの登録は、アプリケーションの開始時に一度だけ行っておけば、帳票出力にてコンテント差し込みが行われるたびに利用されます。 詳しい利用法については、機能サンプルの「コンテントの差し込み」をご覧ください。 FillFillメソッドを呼ぶことで、Reportにデータを渡すことができます。 このメソッドについての詳しい説明は「帳票にデータを渡す方法」にあります。 GetPagesGetPagesメソッドを呼ぶとReportのページ分割が行われます。 このメソッドはFillメソッドの後に呼び出す必要があります。 GetPagesメソッドの戻り値はReportPagesというオブジェクトです。 このオブジェクトについての詳しい説明は「ReportPageの仕様」にあります。 |
||||||||||||
Copyright (c) 2013, SystemBase Co.,Ltd. All rights reserved. |