一.概要
物事の間に階層関係がある場合、通常、折りたたまれた、またはインデントされた組織ツリーにより表現できます。
テーブル構造では、このような分岐階層関係は通常、部門IDと上司IDで表されます。次の図は、テーブル構造の関係とそれにより実現される組織ツリーを示しています。

上図より、組織の各オブジェクトは第一列で一意に表され、各オブジェクト(上位レイヤー)間の関係は第二列で表されます(値は第一列に存在する)。本マニュアルでは、各レイヤーのデータを個別に取得し、及びその上位レイヤーと下位レイヤーの関係により、右側の組織ツリーを生成する方法について説明します。
二.例示
1.データの準備
SELECT * FROM 会社部門

2.帳票の設計
データセット内のデータを分析することで、組織構造には3つのレイヤーが含まれていることがわかります。したがって、これらの3つのレイヤーを個別に抽出する必要があります。部門ID列は一つの部門を一意に表すことができ、且つ部門間の階層関係も部門ID列の値で表されるため、テーブルは次のとおりに設計されます。
1.テンプレートには3つのセルがあり、各セル縦方向で展開されます。
2.セルをデータセットの部門ID列にドラッグしてから、さまざまなフィルター条件を設定します。
設計されたテーブルは下図のとおりです:

2.1.第一レイヤーのフィルタ
セルA1は、本社などの第1レイヤーの部門を表します。ただし、すべての部門IDはデフォルトで拡張されており、第1レイヤーの部門はフィルター条件によって選別されなければなりません。
データから、第一レイヤーの上位IDが空であることがわかります。したがって、セルA1をダブルクリックし、フィルタを選択し、上司ID と等しい 数式 =NULLを条件として追加します(下図参照):

2.2.第二レイヤーのフィルタ
セルA2は、人事部、営業部などの第ニレイヤーの部門を表します。
1.親セルを設定する:A1をA2の左親セルとして設定し、このレイヤーの部門IDを上位部門のIDとともに自動的に展開できるようにします。
2.フィルター:セルA2をダブルクリックし、フィルターをクリックし、上司ID と等しい A1を追加します。
3.親セルフィルターの解除:親セルが設定されているため、A1とA2のデータ列は同じデータセットから取得されます。このとき、子セルはデフォルトで親セルをフィルター条件として使用します。つまり、部門ID=親セルIDという条件に一致するデータがなくなります。したがって、A2セルをフィルタするときは、親セルをフィルタ条件とするのチェックを外す必要があります。
下図のとおりです:

2.3.第三レイヤーのフィルタ
第3レイヤーの原理は第2レイヤーの原理と同じで、具体的な設定は次のとおりです。
1.親セルを設定する:A2をA3の左側の親セルとして、上位の親セルをデフォルト値として設定します。
2.フィルター:セルA3をダブルクリックし、フィルターをクリックして、上司ID と等しい A2 and 上司ID と等しくない =NULLを条件として追加します。
注:ツリーノードを展開すると、ルートノードが複数あり、且つルートノードの下に子ノードがなければ、レイヤーが空白のままになります。フィルター条件に「上司ID と等しくない =NULL」に類似している条件を追加する必要があります。
3.親セルフィルターの解除

注:データに3つ以上の組織レイヤーがある場合は、同じ方法でそれらを追加できます。
2.4.その他の設定
1.テンプレートで部門IDを使用されます。対応する部門名として表示するには、セル属性-形式-データ辞書で変換する必要があります。詳細については、データ辞書をご参照ください。

2.サブレイヤーのあるレイヤーもあれば、サブレイヤーのないレイヤーもある場合、拡張により空白行が表示されます。空白行設定条件属性を非表示にすることができます。詳細については、行と列の非表示をご参照ください。
3.プレビュー
帳票を保存し、改ページプレビューをクリックすると、下図のようになります。
