4D Write Pro: 表組みにブレーク行を追加!

4D Write Pro ドキュメントの表は、ここ最近のバージョンアップで大きく改善されました。4D Write Pro を強力な テンプレート駆動の文書ジェネレーター にするため、私たちは、ヘッダー・データソース・キャリーオーバー行などの 強力な機能 をリリースしてきました。

4D v20 では、ブレーク行 が追加されることになりました!

皆様、拍手でお出迎えください!

HDI: 4D Write Pro: 表組みのブレーク行

 

目的

アプリケーションの種類にかかわらず、リスト は大体の場合において作成する必要があります。

このリストは、一般的になんらかの基準に従ってソートされていて、分類ごとの 小計/合計/統計 を得るための グループ分け が必要です。4D Write Pro の新機能は、まさにこのようなことを可能にします。

いつ、どのように使うのか?
具体例を見てみましょう

ソートされたデータソースが表に対して設定されている場合、ソート基準の値が変化したときにブレーク行を挿入するのが目標です。

たとえば、複数の 大陸、そしてその 都市 に住む人々のデータを持っていたとします。

そしてそのデータに対して、大陸ごと、国ごと、都市ごとにグループ化したリストを作成したい場合を考えます。(ケース1)

blank

あるいは、あらかじめ設定されているリレーションを使って、各大陸の会社ごとにグループ化された従業員のリストを作成したい場合を考えます。(ケース2)

blank

 

どちらの場合もまず最初に、データソースとなるエンティティセレクションがケース毎の条件に従って確実にソートされている必要があります。

ケース1

ds.people.all().orderBy("continent asc, country asc, city asc")

ケース2

ds.People.all().orderBy("worksFor.name asc, continent asc")

1つのソート条件に、1つのブレーク行

ソートされたデータソースが表に割り当てられると、指定の並び順のデータが “繰り返し行” (テンプレート行) に表示されます。次はソート条件に従ってグループ分けする方法を見てみましょう。

インターフェースを使用する

行メニューに新しい項目が追加されました。このメニューはコンテキストに応じて変化するので、カーソルが表の中 (かつ、ヘッダーより下) にある場合にのみ表示されます。

blank

ブレーク行を設定するにあたっては、属性名 (This.item.country) や、リレート属性へのパス (例: This.item.worksFor.name)、あるいはその他の式(Substring(This.item.name;1;1) ) などに基づいて フォーミュラ を作成することができます。

ブレーク属性が設定されると、隣に青いブレーク記号 “S” (ソートのS) が表示されます。これにマウスオーバーすると、その フォーミュラ が表示されます。

blank

ブレーク行の上か下か?

ブレーク行は、データソースのデータを表示する 繰り返し行または に置くことができます。

ブレーク行は、ブレーク行に設定したフォーミュラが返す値が変わるたびに挿入されるので、ブレーク行の場所とデータソースのソート順は一致する必要があります。

blank

 

新しい行属性

属性 wk break formula は、ブレーク行の フォーミュラ を格納します。この属性が存在するだけで、その行はブレーク行とみなされます。ブレーク行は必要なだけ定義することができます (例: 最も低いブレークレベルに Formula(This.item.city)、最も高いブレークレベルに Formula(This.item.continent) )。

WP SET ATTRIBUTES($row; wk break formula; Formula(This.item.country))
WP RESET ATTRIBUTES($row; wk break formula)

注意すべきポイント:

  • ブレーク行は、繰り返し行 または他のブレーク行のすぐ に配置する必要があります。そうでない場合は無視されます。
  • ブレークは 5レベルまで設定できます。6レベル目を追加してもエラーは発生しませんが、表示されません。
  • 表にブレーク行を挿入しただけでは、データソースはソートされません。データソースは別途ソートする必要があります

 

ブレーク行のコンテンツ

テキストの他に、ブレーク行には 2種類のフォーミュラを含めることができます。

  • まず、繰り返し行で表示されている、または表示している可能性のある要素を使用します (例: This.item.continent)。
    返される値は、ブレーク行 直前 最後 の値 (ブレーク行が繰り返し行の にある場合は 直後 最初 の値) です。
  • 次に、ブレーク行のコンテキストでのみ使用できる新しいプロパティ breakItems を使う方法があります(例:This.breakItems)。
    breakItemsプロパティは、表のデータソースのサブセットであり、そのブレーク行の集計対象である繰り返し行の集合に対応します。

    • 大陸-国-都市の区分によるブレーク行の例では、大陸の値が変わるたびに、大陸ごとの人々のデータが サブセット になります。ブレーク行が繰り返し行の前/後に設置されているかに関わらず、このサブセットを使用できます。このサブセットを対象に、sum(“salary”), average(“salary”), などの計算をおこなうことができます。

 

blank

 

最後に、これらのサブセットは表のデータソースと同じ型、すなわち、エンティティセレクション または コレクション となることに留意が必要です。

詳細情報

この機能の詳細については、ドキュメント を参照してください。

まとめ

この新機能は、文書の自動作成に関する 4D Write Pro の威力を改めて示すものといえます。

4Dフォーラムで是非ご意見をお聞かせください。

Roland Lannuzel
- プロダクトオーナー&4Dエキスパート -電子工学を学んだ後、産業用ITの分野で開発者兼コンサルタントとして、さまざまなデータベースやテクノロジーを使って顧客のためのソリューションを構築。80年代後半に4Dに惚れ込み、会計、請求書作成、メールシステムなどのビジネスアプリケーションの作成に4Dを使用してきました。現在も、新機能やデータベース開発ツールの定義など、4Dの未来を積極的に切り開いています。