帳票テンプレートファイルについて

帳票テンプレートファイルは、Excel ブック形式(.xlsx)またはExcel 97-2003 ブック形式(.xls)で作成します。
Excelで通常と同じように帳票を作成し、UnitBaseからフィールドのデータを出力するセルにキーワードを記入します。
帳票テンプレートファイルに複数のシートがある場合、それぞれのシートにキーワードを記入すると、各シートにフィールドのデータを反映することができます。
帳票テンプレートファイルの種類には、「帳票」と「レポート」があります。

帳票
1つのレコードのデータを1つの帳票テンプレートに出力します。
帳票テンプレートファイルに複数のシートがある場合、それぞれのシートにキーワードを記入すると、各シートにフィールドのデータを反映できます。
レポート
複数のレコードのデータを1つの帳票テンプレートに出力します。
帳票テンプレートファイルにシステムキーワード「${#レコード一覧開始#}」と「${#レコード一覧終了#}」があると、「レポート」と判断されます。
レポートの場合、帳票テンプレートファイルの1シートだけに出力できます。

帳票テンプレートの作成例と出力例

ここでは、帳票テンプレートファイルの作成に関する情報をまとめています。


キーワード

キーワードは、フィールドデータや決裁情報の出力先セルを決定するために使用する文字列データです。
帳票テンプレートを登録するときに、キーワードとフィールドを関連付けて、データの出力先を指定します。

※一部の決裁情報は関連付けはできません。システムがキーワードに対応する決裁情報を出力します。


UnitBaseは、「${」と「}」で囲まれた文字列をキーワードとして認識します。

[例] ${顧客名}${単価}${登録日}

キーワードには任意の文字列を使用できます。長さは、「${」と「}」を除いて40文字までです。
通常は、フィールドとの関連をわかりやすくするために、フィールド名と同じ文字列を使用することをお勧めします。
フィールド名と同じ文字列をキーワードに使用すると、帳票テンプレートを登録するときの関連付けを簡単にすることができます。

※両端に「#」または「%」を使用するキーワード、および末尾に「^ファイル名」を使用するキーワードは、UnitBaseで予約されているため利用できません。


システムキーワード

帳票の作成日時を書き込んだり、明細の出力範囲を指定したりするために、システムキーワードが定義されています。
以下にシステムキーワードの一覧を示します。

システムキーワード説明
${%帳票作成者名%} 帳票作成を実行したユーザー名を出力します。
${%帳票作成日時%} 帳票作成を実行した日時を出力します。
${%レコード作成者名%} レコードを作成したユーザー名を出力します。
${%レコード作成日時%} レコードを作成した日時を出力します。
${%レコード更新者名%} レコードを更新したユーザー名を出力します。
${%レコード更新日時%} レコードを更新した日時を出力します。
${#明細開始#}
${#明細終了#}
${#固定明細行終了#}
${#偶数行背景#}
明細行の出力設定のために使用します。
作成された帳票では、これらのキーワードは消去されます。
${%明細行番号%} 明細行の行番号を出力します。

レポート用には、次のキーワードが用意されています。

システムキーワード説明
${#レコード一覧開始#}
${#レコード一覧終了#}
${#レコード一覧偶数行背景#}
${#明細外フィールド補完#}
レポートの出力設定のために使用します。
作成されたレポートでは、これらのキーワードは消去されます。
${%レコード一覧行番号%} レポート内のレコード一覧の行番号を出力します。
${%レコード一覧件数%} レポート内のレコード件数を出力します。

決裁キーワード


決裁キーワード説明
${%決裁状況%} 現在の決裁の状況[承認・却下・決裁中({ユーザー名})・取消・修正中]を表示します。
${%起案日%} 決裁の起案日を表示します。
${%決裁完了日%} 決裁の完了日を表示します。完了していない場合は空となります。
${%申請:本人%} 決裁の申請者名を表示します。
${%申請:代理%} 決裁の代理申請者名を表示します。本人が申請した場合は空となります。
${%申請:コメント%} 決裁の申請者のコメントを表示します。コメントがない場合は空となります。
${%決裁:本人[i]%} -20 ≦ i ≦ -1 または 1 ≦ i ≦ 20 です。
対応する決裁者名を表示します。対応しない場合は空となります。
${%決裁:代理[i]%} -20 ≦ i ≦ -1 または 1 ≦ i ≦ 20 です。
対応する決裁代理者名を表示します。対応しない場合は空となります。
${%決裁:状況[i]%} -20 ≦ i ≦ -1 または 1 ≦ i ≦ 20 です。
対応する決裁状況を表示します。対応しない場合は空となります。
${%決裁:日時[i]%} -20 ≦ i ≦ -1 または 1 ≦ i ≦ 20 です。
対応する決裁日時を表示します。対応しない場合は空となります。
${%決裁:コメント[i]%} -20 ≦ i ≦ -1 または 1 ≦ i ≦ 20 です。
対応する決裁コメントを表示します。対応しない場合は空となります。

フィールドの値の結合

1つのセルに文字列とキーワードを記述すると、帳票にはその文字列とフィールドの値が結合されて出力されます。複数のキーワードを記述すると、キーワードに関連付けられたそれぞれのフィールドの値が結合されて出力されます。システムキーワードを記述した場合は、そのキーワードで表される値が出力されます。
文字列以外のフィールドの値は、固定の書式で文字列に変換されたあとで結合されます。

[例]${姓} ${名} (${年齢})」と記述した場合
帳票には「佐藤 一郎 (35)」「鈴木 花子 (28)」のように出力されます。

※フォント設定は、セルに対して指定されたものが利用されます。文字単位で指定されたフォント設定は無視されます。


[キーワード一覧]ダイアログボックスの利用

[キーワード一覧]ダイアログボックスには、編集中のデータベースのフィールド名をキーワード化した文字列や、システムキーワードなどが一覧に表示されます。
表示されたキーワード文字列をコピーし、帳票テンプレートファイルで出力先としたいセルに貼り付けると、キーワードの入力ミスを防ぐことができ、効率よく帳票テンプレートを作成できます。

[キーワード一覧]ダイアログボックスは、[データベース編集]画面で、コマンドバーの 帳票テンプレートの登録や管理 をクリックし、表示されるメニューで[キーワード一覧]を選択すると表示されます。


[i]で表現した決裁キーワードは、以下が表示されます。

i が -3 以下、または 3 以上のキーワードが必要な場合は、上記キーワードを利用して、Excelのオートフィル機能を使用してキーワードを作成すると、書式の誤りを減らすことができます。

フィールドとセルのデータ型の対応

帳票を出力するときの、UnitBaseのフィールドとExcelのセルのデータ型の対応、およびフィールドを合成するときに文字列化する書式は、次のとおりです。

UnitBase
フィールドのデータ型
Excel
セルのデータ型
フィールド合成時の文字列化書式
文字列(1行)、文字列(複数行)、
ドロップダウン(文字列)、
選択リスト(文字列、数値 : カンマ区切り)、
自動採番、ユーザー
画像*1、ファイル*1
文字列 文字列
数値、ドロップダウン(数値)、
チェックボックス*2、時間量*3
数値計算、日時計算(結果 : 時間量)*3
年齢計算
数値 整数 : 整数表記
小数 : 桁指定による小数表記
日付時刻、日時計算(結果 : 日時)*4 日時 日時 : YYYY/MM/DD hh:mm
日付 : YYYY/MM/DD
時刻 : hh:mm
URL、メール ハイパーリンク URL
画像*5 画像

*1 [帳票テンプレートの設定]ダイアログボックスで、キーワードとのマッピングで「画像フィールド名^ファイル名」または「ファイルフィールド名^ファイル名」を選択すると、登録した画像またはファイルのファイル名が出力されます。

*2 TRUE:1/FALSE:-1。
セルの書式設定を利用できます。

*3 最小単位で表現。

*4 日時形式で出力する場合、出力先のセルの表示形式で日付を設定する必要があります。
書式が設定されていない場合は、数値が表示されます。

*5 テンプレート種類が「レポート」の場合は、画像を出力することはできません。

システムキーワード・決裁キーワードとセルのデータ型の対応


キーワード Excel
セルのデータ型
フィールド合成時の文字列化書式
${%帳票作成者名%} 文字列 文字列
${%レコード作成者名%}
${%レコード更新者名%}
${%決裁状況%}
${%申請:本人%}
${%申請:代理%}
${%申請:コメント%}
${%決裁:本人[i]%}
${%決裁:代理[i]%}
${%決裁:状況[i]%}
${%決裁:コメント[i]%}
${%帳票作成日時%} 日時 YYYY/MM/DD hh:mm
${%レコード作成日時%}
${%レコード更新日時%}
${%起案日%}
${%決裁完了日%}
${%決裁:日時[i]%}
${%明細行番号%} 数値 整数表記
${%レコード一覧行番号%}
${%レコード一覧件数%}

セルの書式設定

キーワードを記入したセルに書式を設定すると、帳票にレコードの値を出力するときに、その書式設定が有効になります。
書式を設定するときは、データ型に合ったものにする必要があります。

[例]

フィールドの値 2012/12/03
セルの書式 ユーザー定義「ggge"年"m"月"d"日"
Excel帳票での書式 平成24年12月3日

明細行の出力

明細フィールドを帳票に出力するには、帳票テンプレートファイルに明細行テンプレート範囲を作成します。
明細行テンプレート範囲は、明細の1行分の出力定義を記述した範囲です。複数の行で構成することができます。帳票出力時に明細行テンプレート範囲があると、UnitBaseはその範囲を明細フィールドの行数だけコピーした上で、明細内のフィールドのデータを出力します。
明細行テンプレート範囲は、帳票テンプレートファイルの各シートに1つずつ作成できます。


明細行テンプレート範囲の定義

明細行テンプレートは、システムキーワード「${#明細開始#}」と「${#明細終了#}」の間の、長方形の範囲内に記述します。
範囲内の罫線や背景色、文字色といったセル書式や、セル結合、計算式は、出力される明細行に反映されます。計算式中のセル座標は、明細行の座標にあわせて修正されます。

明細行テンプレート範囲の書式

[例] 明細行テンプレート範囲の定義例と出力例


明細行の出力形式

明細行は、システムキーワード「${#明細開始#}」が記述された行から出力されます。明細行の出力形式には、動的明細行出力と固定明細行出力があります。

動的明細行出力
レコードに存在する明細行の数だけ、明細行テンプレート範囲が挿入されます。システムキーワード「${#明細終了#}」より下にある行は、挿入された明細行の分だけ下へ移動します。
明細行が0行の場合は、何も出力されません。

[例]

動的明細行出力の例

  • 動的明細行出力の場合は、「${#明細開始#}」から「${#明細終了#}」までの行が動的に増減します。そのため、この範囲の左右にあるセルには、値や文字列、キーワードを記入しないでください。

    動的明細行出力で記入できないセル

固定明細行出力
システムキーワード「${#固定明細行終了#}」を使用して明細を出力する範囲を定義します。
${#明細開始#}」から「${#固定明細行終了#}」までの間に明細を出力します。

※テンプレート種類が「帳票」の場合は、「${#明細開始#}」から「${#固定明細行終了#}」までの間に1行は必要です。

明細の行数が、明細行出力に用意されている行数よりも多い場合は、「${#固定明細行終了#}」以降に行を挿入して明細行を出力します。
少ない場合は、残りの領域に明細行テンプレート範囲に設定された背景色や罫線、塗りつぶしパターンがコピーされます。明細行テンプレート範囲内の文字列や計算式はコピーされません。

[例]

固定明細行出力の例

※固定明細範囲の行数が明細テンプレート範囲の行数で割りきれない場合、余りの行にはコピーされません。

固定明細行範囲の行数が割りきれない場合の例1

固定明細行範囲の行数が割りきれない場合の例2

  • 固定明細行出力の場合は、明細テンプレート範囲の左右にあるセルに値や文字列、キーワードを記入できます。

    [例]

    固定明細行出力ので明細テンプレート範囲の左右にあるセルに記入した例


明細行の罫線と背景

画像の出力

キーワードと画像フィールドとを対応付けると、レコードの画像を帳票に出力することができます。
明細行に存在する画像も出力できます。
画像は、縦横比を維持しながら、キーワードのセルの大きさいっぱいに貼り付けられます。

※実際のサイズを超えては拡大されません。

※テンプレート種類が「レポート」の場合は、画像フィールドの画像を出力することはできません。

決裁情報の出力

決裁情報を帳票に出力するには、帳票テンプレートファイルに決裁キーワードを指定します。

決裁履歴のキーワードには、次の種類があります。


インデックス値 i は、[ -20 ≦ i ≦ -1] または [1 ≦ i ≦ 20 ]とします。

決裁履歴は、現在有効な履歴だけを出力します。差し戻しで無効になった履歴は出力しません。
また、決裁履歴のキーワードは、フィールドとマッピングすることはできません。


決裁情報からの帳票出力例

次のような、決裁状況が「承認」の決裁情報から、帳票を出力します。


次のようなテンプレートを用意して出力することもできます。

レポートによるレコード一覧の出力

レポートを出力するには、帳票テンプレートファイルにレコード一覧テンプレート範囲を作成します。
レコード一覧テンプレート範囲は、レコード一覧の1行分の出力定義を記述した範囲です。複数の行で構成することができます。レポート出力時にレコード一覧テンプレート範囲があると、UnitBaseはその範囲をレコードの行数だけコピーした上で、レコード一覧のフィールドのデータを出力します。


レコード一覧テンプレート範囲の定義

レコード一覧テンプレートは、システムキーワード「${#レコード一覧開始#}」と「${#レコード一覧終了#}」の間の、長方形の範囲内に記述します。
範囲内の罫線や背景色、文字色といったセル書式や、セル結合、計算式は、出力されるレコード一覧行に反映されます。計算式中のセル座標は、レコード一覧行の座標にあわせて修正されます。

レコード一覧テンプレート範囲の書式

[例] レコード一覧テンプレート範囲の定義例と出力例


レコード一覧の出力形式

レコード一覧は、システムキーワード「${#レコード一覧開始#}」が記述された行から出力されます。出力時には、レコードの数だけレコード一覧テンプレート範囲が挿入されます。システムキーワード「${#レコード一覧終了#}」より下にある行は、挿入されたレコードの分だけ下へ移動します。
レコード一覧が0行の場合は、何も出力されません。

[例]

レコード一覧の出力例


レコード一覧の罫線と背景


レコード一覧テンプレート範囲外のキーワード

レコード一覧テンプレート範囲の外に記述したキーワードには、レコード一覧の1行目の値が出力されます。

[例] 下図の帳票テンプレートの場合

${訪問日}」と「${担当者}」がレコード一覧テンプレート範囲の外にあります。これらにはレコード一覧の1行目の値が出力されます。
${担当者}」がレコード一覧テンプレート範囲に記述されていなくても、データベースのフィールドに存在していれば値が出力されます。

レコード一覧テンプレート範囲外にあるキーワード


レコード一覧内の明細行出力

明細フィールドをレコード一覧に出力するには、レコード一覧テンプレート範囲に明細行テンプレート範囲が重なるように作成します。
レコード一覧員明細行を出力する場合は、帳票出力のときの「${#明細開始#}」と「${#固定明細行終了#}」の定義に、以下の制約が追加されます。

${#明細開始#}
システムキーワード「${#レコード一覧開始#}」と「${#レコード一覧終了#}」のセルを対角線の両端とする長方形の範囲内に、「${#明細開始#}」を配置する必要があります。

レコード一覧テンプレート範囲内に明細開始を配置できる範囲

${#固定明細行終了#}
テンプレート種類が「帳票」の場合と異なり、システムキーワード「${#明細開始#}」と「${#固定明細行終了#}」を同じ行に配置できます。

レコード一覧内の明細行出力では、帳票出力と同様に、「${#明細開始#}」が記述された行から明細が出力されます。出力形式には、動的明細行出力と、固定明細行出力があります。

レコード一覧内の動的明細行出力
レコード一覧テンプレート範囲に、明細行を動的に挿入します。動的明細行の定義により明細行の数だけ明細行テンプレート範囲が動的に増減するため、明細の左右にあるレコード一覧テンプレート範囲に影響が及びます。

レコード一覧テンプレート範囲内の動的明細行出力例

レコード一覧内の固定明細行出力
帳票の固定明細と同様に、「${#明細開始#}」から「${#固定明細行終了#}」までの間に最低限明細を出力する範囲を確保します。

※固定明細行出力用に確保する行数は、1件の明細の行数、つまり${#明細開始}${#明細終了#}で囲まれた領域の行数以上である必要があります。

固定明細行の行数設定

[例]

出力例のように、明細の行数が少なくても、固定明細行の範囲は確保されます。

レコード一覧テンプレート範囲内の固定明細行出力例

[例] 固定明細行に範囲が1行の帳票テンプレートの例

出力例の最後の行のように、明細の行数が0行でも出力されます。

レコード一覧テンプレート範囲内の固定明細行出力例:固定範囲1行


明細外フィールド補完

システムキーワード「${#明細外フィールド補完#}」を利用すると、明細2行目以降の明細外のセル部分に明細1行目のセルを複製することができます。「${#明細外フィールド補完#}」を利用する場合、各システムキーワードの配置条件に加えて、以下の条件をすべて満たす必要があります。

  1. システムキーワード「${#レコード一覧開始#}」・「${#明細開始#}」・「${#明細外フィールド補完#}」・「${#固定明細行終了#}」がすべて同じ行に存在すること

    ※「${#固定明細行終了#}」は必ずしも必要ではありません。ただし、存在しない場合は明細データがないレコードが出力されません。

  2. レコード一覧テンプレート範囲と明細テンプレート範囲の各フィールドキーワードが同じ行に存在すること
  3. システムキーワード「${#レコード一覧終了#}」と「${#明細終了#}」が同じ行に存在すること
  4. 上記 1.、2.、3.の行は、この順に並んで3行で記述すること
    順に並んで3行で記述されていない場合は、出力結果は保証されません。

明細1行目の明細外セルで、計算式などにセル座標が利用されている場合は、行の複製に合わせて補正されます。

[利用例]

明細外フィールド補完の使用例

補足・制限事項

補足

制限事項