過去の桐井戸端BBS (桐ver.7)
2439 桐Ver7.1レポートで総頁数を出すには? HLK 1999/8/19-08:45
初めまして

業務で桐Ver7.1を使用しています。
Ver5の頃から常々不便に思っていたのですが、レポート出力時に各頁に
頁の総計を印刷させたいのですが、思うように出来ません。
要するに、こんな事をしたいのですが、

  レポートの各頁 / 頁の最大値

今は、頁の最大値を変数に予め格納して(その前にいったんレポートを
プレビュー表示して、レポートの枚数を目で見て確認しておきます)
それから変数にレポート枚数をぶちこんで、レポートで変数を表示
させる・・・枚数が変わったらいちいちプレビューし直したり
印刷後、1枚ずつ確認したりで非合理的です。

何とかならないものでしょうか
HLK
2444 Re: 前田 1999/8/19-11:49
記事番号2439へのコメント
V8ですがV7でも同じと思いますので、レポートの集計行に次のような計算
式を入力し集計種別「頁計」で設定したらどうでしょう。
#MAX([入金額])
2449 Re: 悲しげ 1999/8/19-12:54
記事番号2444へのコメント
どもっ、HLKさん、前田さん、
これはおそらく標題が正しくないような気がします。(^^;)
「頁総計」と云えば、一般的には、単純にその頁の計を指すと思います。
私の想像では、そうではなくて、例えば請求書を出す場合だと

得意先  得意先毎の総頁数  各頁に印字するのは
あいう     3枚     1/3 2/3 3/3
かきく     2枚     1/2 2/2

のように出力したいと云うことなのではないでしょうか?
とすれば私なら、標題は
 レポートで「1枚目/全3枚中」のように印刷したい
のようにすると思います(外していたらごめんなさい)。

とすれば、V6以降で試してことはありませんが、少なくともV5の時は、
これはできなかったと思います。その理由は、帳票印刷の場合、
桐の挙動としては、その頁内だけで(左上から右下にかけて)
判断しているためであって、他頁まで含めて判断はしていないからです。
この仕様が、もしV6以降でも変わっていないとすれば、やり方
はV5と同様になると思います。
V5で私は次のように各グループ毎の頁枚数を予め算定しておき、
その値を別途増設した項目[枚数](仮称)に入れてから、印刷に
かけていました(行集計で出した枚数を集計行のみ別表に書き
出して、次の別表から併合/置換で書き戻す)。
V8でこれが簡単に可能になっているのならいいですね、できる
ようになったとの話も聞いたことは未だありませんが。
2450 Re: cheese 1999/8/19-13:01
記事番号2439へのコメント
レポートの枚数が10枚だったら
1/10、2/10....
のようにページを印刷するわけですよね、
あまり必要に迫られたことがないのでやったことはないですが、
一括処理かイベントで、
印刷対照表のレコード件数をレポートの明細の行数で割って
余りが出たら1プラス..というのを変数に入れてページの最大値に
するというのはいかがでしょうか?
スマートではないですが、少し進歩するかもしれません。
レポートの明細行数はレポートによって違いますので
その都度設定します。
2465 Re: HLK 1999/8/20-12:34
記事番号2439へのコメント
HLKです。

前田さん、悲しげさん、cheeseさんからの早速のコメントを有難うございました。
意味不明な言葉を使い、前田さんには申し訳ないことをしてしまいました。
悲しげさんとcheeseさんの申されました通り、印刷時に頁の最大値を各頁に印刷し
たいというのが目的です。
これは、一太郎などのワープロでは昔からある機能で、何枚あるうちの何ページな
のかをすぐに判別できるので重宝しているのですが、残念ながら桐には備わってい
ないので、何とかしたいと思ったのが発端です。

さて、長話はともかく、このような解決方法があると直接メールを下さった奇特な
方がいましたので紹介します。

>拝啓HLK殿
>こういうのではだめですか?

#INT(#総件数/レポートの明細部の行数)+1

#総件数とは、編集対象表で、処理の対象になっているレコード件数を数値で返すも
ので、ただし、

   削除レコードが有効であれば削除レコードの件数も含まれる

ことに注意して下さい。(一括処理リファレンスを参照して下さい)
これは、要するに削除したレコードがあっても、復活できる状態にある場合にはそ
のレコード数も加算されるものらしいということです。すなわち、レポートから表
を開いて印刷すると、削除レコードの件数が現れてしまって使い物になりません。

しかしご安心あれ、2つの解決策を見つけました。
1つは、表を開いて、絞り込みで必要な件数だけレコードを選択して、それをレポ
ートに印刷する方法
2つめは、表に表整理をかけて削除レコードを全くなくしてしまう方法
です。
このようにすれば、削除レコードの数を全く気にしないで使えると思います。
まずはお試しあれ。

1つだけ気になる点は、明細部の行数を示す数値の変数が、フォームにはあるけれ
どレポートにはないという事です。
ま、これは桐の愛嬌ということで、お許し下さい。
---------------
とのことでした。
で、ついさっき試してみたのですが、1つめの方法で見事にできました。

コメント下さいました皆様、ありがとうございました。

HLK
2466 Re: 悲しげ 1999/8/20-13:54
記事番号2465へのコメント
どもっ、HLKさん、
あっそうか、それならそう難しくはないですね。(^^;)

>#INT(#総件数/レポートの明細部の行数)+1

だったら、ここは次のようにも書けますね。

#ceil(#総件数/レポートの明細部の行数)
#切り上げ(#総件数/レポートの明細部の行数,0)
#総件数%レポートの明細部の行数+1
(%と云うのは整数除算です)

昨夜から、まるでここに常駐しているようだ。(^^;)
2488 おっとどっこい HLK 1999/8/23-11:53
記事番号2439へのコメント
HLKです。

ページの最大値を表示する方法を何とか見つけたのですが、バグを見つけてしまい
ました。

#INT(#総件数/レポートの明細部の行数)+1

では、#総件数がレポートの明細業でちょうど割り切れる数だと、1頁多くなってし
まいます。

で、このように直しました。

#INT((#総件数-0.5)/レポートの明細部の行数)+1

0.5を引くのは、#総件数から1件を越えない値(例えば0.9)なら何でもいいで
す。

これでなんとかなりましたが、まだ十分検証していないから何が起こるか怖いで
す・・・

HLK
2489 Re: tuji 1999/8/23-13:23
記事番号2488へのコメント
>ページの最大値を表示する方法を何とか見つけたのですが、バグを見つけてしまい
>ました。
>#INT(#総件数/レポートの明細部の行数)+1

#INT(num)という関数はnumの整数部を取り出す関数なので
バグではないと思います。
#切り上げのほうが記述が簡単かと思いますけど。
2492 Re: 宮城 1999/8/23-18:40
記事番号2489へのコメント
>#INT(num)という関数はnumの整数部を取り出す関数なので
>バグではないと思います。

numを越えない最大の整数だったはずですよ。

#INT(−0.5)→ −1
2493 Re: 宮城 1999/8/23-18:47
記事番号2492へのコメント
失礼しました。BASICと勘違いしてますね。
tujiさんのおっしゃるとおりです。

戻る