各ページの小計の値を、複数ページに跨って合計することにより、総合計を計算して表示するための設計をお話ししようとしています。
そのために、今までの回で使用したスプール・データは適切ではなかったので、新たに別のスプール・データを用意しました。今まで何度か使用してきたベイトップ書房の見積書の明細ページを元に作りました。
先ず、MapF 上で、スプール・データをそのまま表示するための、1 つのグループとゾーンの組み合わせを作りました。
|
明細ページをそのまま表示した設計のプレビュー画面 |
本の単価と冊数の値を元に、本ごとの合計金額を計算します。そのために、グループ "g1" の中に次のゾーンを定義します。
- 冊数のメモリー・ゾーン "VOLM"
- 単価のメモリー・ゾーン "UNITPM"
- それぞれを掛ける数値計算ゾーン "PRICEM"
- 計算結果を表示するメモリー置換ゾーン "PRICE"
|
冊数のメモリー・ゾーン "VOLM" |
|
単価のメモリー・ゾーン "UNITPM" |
|
冊数と単価を掛け算する数値計算ゾーン "PRICEM" |
|
計算結果を表示するメモリー置換ゾーン "PRICE" |
このスプール・データは元々、1 行おきに空白行があることから、上のように定義しただけでは空白行に計算結果として "0" が表示されてしまいます。そのため、空白行では実行されないように "a" という名前を付けた条件を付けています。("条件" については、回を改めて詳しくお話しする予定です。)
ところが、この状態でプレビューしてみると、次のようにおかしな結果が表示されています。1行目の計算結果がメモリー置換されていませんし、2 行目の計算結果は本来は 1 行目の計算結果である金額が表示されています。
|
そのままプレビューした画面 |
この時の "サマリー" の中の条件 "a" に含まれるゾーンの上下関係を見ると、次のようになっています。これでは、最後に実行されるべきゾーン "PRICE" が 3 番目に実行されることになってしまいます。
|
サマリーの中の条件 "a" 内のゾーンの順番 |
そこで、メモリー置換ゾーン "PRICE" を最も下に移動します。
|
メモリー置換ゾーン "PRICE" を最も下に移動した結果 |
他のゾーンの実行順序も正しいことを確認して、サマリー表を保存します。この結果、プレビュー画面は次のようになり、正しくなったことが確認できました。
|
修正結果のプレビュー画面 |
なお、計算結果の金額に 3 桁区切りのカンマが表示されているのは、MapDraw上での計算結果に対して、プリファレンスの "桁区切り" 欄でカンマを指定していることが効いているためです。
|
MapDraw プリファレンスの桁区切りの指定 |
0 件のコメント:
コメントを投稿