過去の桐井戸端BBS (桐ver.8)
2735 一覧表での通帳のように追加印刷したいのですが? ぶん 1999/9/20-23:39
はじめて投稿します。
桐8sp2を使用しています。
一覧表印刷で銀行の通帳のように追加印刷がしたいのですが、
方法が分かりませんので、よろしくお願いします。
2736 Re: 悲しげ 1999/9/21-12:49
記事番号2735へのコメント
どもっ、ぶんさん、

>一覧表印刷で銀行の通帳のように追加印刷がしたいのですが、

うっ、こっ、これは難しい。(^^;)
私も似たようなことをする機会があったのですが、面倒なので
逃げたことがあります。(^^;)
が、一応、その時考えたことを書いてみます。
なお、下記はグループ毎に印刷する場合を考慮してはおりませ
ん、グループ無しの場合だけです。グループが入る場合は、以
下の過程はもっと複雑になります。

1)まず、追加印刷分のレコードに何らかのフラグを付けてお
く必要があります。その方法は、各レコードに更新年月日を入
れておくのもひとつです(例:挿入初期値式とか)。あるいは、
印刷させた都度、今回印刷レコードのみフラグ項目を印刷年月
日等で置換しておく方法もあるでしょう(つまり次に印刷する
のはここが空のレコードと云うことになる)。

2)次に、追加印刷分のみを絞り込んで別表に書き出します。
この別表では、先頭レコードの前に、必要な数だけ空レコード
を行挿入しておきます。必要な数とは、例えば1頁の明細行が
40行だとして、前回が15行目まで印字済だとすれば、15行の空
白行を挿入すると云うことです。こうすると、今回印字は16行
目から始まることになるはずです。こうして作った別表データ
を印刷に使います。

3)そのためには元表で、各レコードが頁内の何行目になるの
かを入れておいた方がいいでしょう(ついでに頁数も入れてお
きますか)。仮に1頁が40行とすると、計算式は次のような感じ
になります。ただし、置換(または再計算)に当たっては、所
定の並べ替え状態であることが前提です。
 [頁]  #ceil(#行番号/40)
 [行目] #条件選択(#直前値([行目],0)=40,1,1,#直前値([行目],0)+1)
ここで得た最終レコードの[行目]値を変数に取り込んで、別表
に挿入する空白行の数として処理します。

4)難点があります。そのひとつ、「一覧表印刷」と仰ってま
すが、これが表の一覧表印刷だとすると、話がかなり面倒にな
りますから、ここは一覧表レポートとして考えます。

5)難点の二つ目、印刷では通常は枠罫線が入ると思われます
が、この罫線の扱いが少々面倒です。一番簡単な方法は、枠組
み罫線のみのレポート定義とデータ印刷のみ(罫線無し)のレ
ポート定義を別にすることだと思います。つまり、予め枠罫線
のみの用紙を印刷しておいて、データはその用紙に追加印刷し
て行く形をとる。

以上のようなことを考えてみましたが、如何?
定型化するために、以下に1)〜3)の過程を一括処理に書い
てみました。(変数は宣言済とする)

表 "なんとか.TBL",表番号=1,索引="なんとか順"
置換 終了状態=&OK,[行目] /*項目計算式を設定してあるとして再計算*/
ジャンプ 行番号=最終
&行目=[行目]
絞り込み [フラグ]=""  /*フラグが空の場合方式として*/
置換 [フラグ]=#年月日 /*単なるマークでも可、後でやってもよい*/
書き出し 表,"別表.TBL",*
表 "別表.TBL",表番号=2
繰り返し &i,&行目
 行挿入 [カントカ]=""
繰り返し終了
2743 Re: ぶん 1999/9/21-23:27
記事番号2736へのコメント
悲しげ先生、
早速のコメントありがとうございます。

早速試してみます。
ありがとうございました。

戻る