過去の桐井戸端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へのコメント 悲しげ先生、 早速のコメントありがとうございます。 早速試してみます。 ありがとうございました。 |