コンテントの差し込み

このページでは、以下の帳票を作成します。

複数の帳票に共通の部分があるという場合、その共通部分を1つの帳票定義ファイルに定義しておき、 各帳票にその内容を差し込むことができます。 今回の例では、以下の赤枠で囲った会社情報を表示する部分を差し込む例について説明します。

差込コンテントのサンプル
サンプルについて
完成したサンプルが example フォルダ内に以下の名前で含まれています。 帳票定義ファイル: example_mergecontent.rrpt、example_shared.rrpt ソースコード: ExampleMergeContent.cs、ExampleMergeContent.vb、ExampleMergeContent.java

デザイン

この帳票は、2つの帳票定義ファイルから作成します。 example_shared.rrpt で定義されたコンテントの内容を、example_mergeconent.rrpt 内のコンテントに差し込みます。

差込コンテントのサンプル

差し込みが行われる内容は[要素]のみです。 例えばコンテントの[表示条件]や子グループなどといった、[要素]以外の内容が差し込み先へ反映されることはありません。

差し込みによって追加された要素は、差し込み先のコンテントで元々定義された要素と区別なく扱われます。 そのため、式に含まれる列名などは合わせておく必要があります。

差し込みを行うには、差し込む内容となるコンテント(今回の例では example_shared.rrpt 内に定義)の[識別子]と、 差し込む先となるコンテント(example_mergecontent.rrpt 内に定義)の[差込コンテントID]に、 同じ値( "company_info" )を設定します。

差込コンテントのサンプル

サブコンテントの[配置]プロパティ

差し込み機能はどのようなコンテントに対しても利用可能ですが、 今回の例のように、帳票内のごく一部の部分のみを差し込みで定義するといった場合は、 差し込み先コンテントをサブコンテントとして作成し、[配置]プロパティを利用すると便利です。

[配置]プロパティによって、コンテント内でのサブコンテントの位置やサイズを設定することができます。 [配置]プロパティは通常のコンテントには設定できません。サブコンテントにのみ設定可能です。

差込コンテントのサンプル

※現行のバージョンでは、 サブコンテントの[配置]プロパティは数値を直接入力することでのみ設定可能です。 マウス操作での設定はできません。

プログラムの開発

帳票を出力する際、[差込コンテントID]の設定されたコンテントが見つかると、 共有コンテント(SharedContent)という場所から、差し込む内容のコンテントが検索されます。

そのため、帳票出力を行う前に、差し込む内容のコンテント(example_shared.rrpt内で定義)を、 あらかじめ共有コンテントへと登録しておく必要があります。

共有コンテントへの登録は、Report.AddSharedContentメソッドによって行うことができます。 このメソッドには、登録するコンテントのIDと、それを含むReportDesignオブジェクトを渡します。

  // C#
  
  // 差込みを行うコンテントを、あらかじめ共有コンテントへ登録しておきます
  ReportDesign sharedReport = new ReportDesign(Json.Read("report/example_shared.rrpt"));
  Report.AddSharedContent("company_info", sharedReport);
  ' VisualBasic
  
  ' 差込みを行うコンテントを、あらかじめ共有コンテントへ登録しておきます
  Dim sharedReport As New ReportDesign(Json.Read("report/example_shared.rrpt"))
  jp.co.systembase.report.Report.AddSharedContent("company_info", sharedReport)
  // Java
  
  // 差込みを行うコンテントを、あらかじめ共有コンテントへ登録しておきます
  ReportDesign sharedReport = new ReportDesign(ReadUtil.readJson("report/example_shared.rrpt"));
  Report.addSharedContent("company_info", sharedReport);

AddSharedContentメソッドはクラスメソッドとして定義されています。 共有コンテントの登録はアプリケーションの開始時に一度だけ行っておけば、帳票出力を行う度に利用されます。

共有コンテントを登録しておけば、後は通常の方法で帳票を出力することで差し込みが行われます。 差し込みによって追加される要素で利用される値も、データソースやグローバルスコープに含めるようにしてください。 今回の例では、グローバルスコープに会社名と電話番号、そしてデータソースに含むテーブルに担当者の列を含めています。

ソースコードの全体を確認するには、exampleフォルダ以下を参照して下さい。