過去の桐井戸端BBS (桐ver.9)
22357 レポート印刷のタッグ印刷が枚数通りいかない morimori 2003/09/15-17:42
教えてください。
表には3件(行)の住所録データがあります。(&レコード数=3)
[枚数]の項目には印刷する枚数が設定されていて、上から3,2,1とします。

以下の構文がズバリですが、理論上?はタイル印刷開始位置から1件目のデータが
3タイル印刷され、排紙された後2件目のデータが2タイル印刷され・・・と思う
のですが、実際は各データが3タイルずつ一度に印刷され排紙します。
ブレークポイントを設けてデバッグしてみると1回目のループで印刷が完了し、
2回目、3回目のループでは何も起こりませんでした。

タッグ印刷で必要な枚数ずつ印刷する方法をご存じの方、よろしくお願いします。

  繰り返し &処理件数=1,&レコード数
    位置指定 行番号=&処理件数
    代入 &枚数=[枚数]
    条件(&枚数=0)代入 &枚数=1
    帳票印刷 "タッグ"¥
         ,開始ページ=&処理件数¥
         ,終了ページ=&処理件数¥
     ,タイル印刷開始位置=&タイル番号\
         ,繰り返し数=&枚数\
          ,終了状態=&実行確認
    &タイル番号=&タイル番号+&枚数
    条件 (&タイル番号>12) &タイル番号=1
  繰り返し終了

p.s.桐Ver9です。

22359 Re:レポート印刷のタッグ印刷が枚数通り行かない 佐田 守弘 2003/09/15-19:01
記事番号22357へのコメント
morimoriさん

うまく行かないのは、開始ページと終了ページのパラメータの意味の取り違えと思います。
どうやら開始レコードと終了レコードを指定するためにこのパラメータを使っている様に見えますが、
開始ページと終了ページは、レコード番号の意味ではなくて物理的に印刷される紙のページ番号です。

多分やりたい事を実現しようとすると、次の様にそれぞれのレコードで1行ずつ
絞り込みを行いながら印刷を行う必要があります。
=========================================================================
変数 整数{&処理件数,&レコード数,&枚数,&タイル番号,&実行確認}
表 タック
代入 &レコード数=5,&タイル番号=1
繰り返し &処理件数=1,&レコード数
 位置指定 行番号=&処理件数
 絞り込み 行数=1
  代入 &枚数=[枚数]
  条件(&枚数=0)代入 &枚数=1
  レポート印刷 "タック"¥
      ,タイル印刷開始位置=&タイル番号\
      ,繰り返し数=&枚数\
      ,終了状態=&実行確認
 絞り込み解除
 代入 &タイル番号=#mod(&タイル番号+&枚数,12)
繰り返し終了
終了
=========================================================================
以上の一括処理で、
>タイル印刷開始位置から1件目のデータが3タイル印刷され、
>排紙された後2件目のデータが2タイル印刷され・・・
という様になります。

なお、12タイル印刷した後、「&タイル番号=1」としていますが、これではだめです。
次のページに数枚印刷された時に破たんします。
上記に訂正したとおり、「#mod(&タイル番号+&枚数,12)」の計算式で、12枚を超えた分にセットする必要があります。

●しかしながら疑問が
本当にこの方法で宜しいのですか?1レコードずつ印刷する度に排紙さます。
まさかもう一度プリンタに入れ直すとは考えにくいのですが。

●良く行われる方法
過去ログにも掲載されていると思いますが、印刷する枚数に応じたレコード数を
書き出したワーク様の表を作り、この表で一気に印刷する方法が昔から行われております。

佐田守弘(KS-00119)



22373 Re:レポート印刷のタッグ印刷が枚数通り行かない morimori 2003/09/16-16:14
記事番号22359へのコメント
佐田さんこんにちは、ご指摘有り難う御座います。

>うまく行かないのは、開始ページと終了ページのパラメータの意味の取り違え
>と思います。
>どうやら開始レコードと終了レコードを指定するためにこのパラメータを使って
>いる様に見えますが、開始ページと終了ページは、レコード番号の意味ではなくて
>物理的に印刷される紙のページ番号です。

了解しました。
タッグ印刷における開始ページと終了ページの理解がおかしかったことが原因みたいですね、
タイル番号変更に関しても軽率でした。

>●しかしながら疑問が
>本当にこの方法で宜しいのですか?1レコードずつ印刷する度に排紙さます。
>まさかもう一度プリンタに入れ直すとは考えにくいのですが。

勿論、全て1回のプリントアウトで実行できればベストですが、コマンドの性質上、
とりあえずその「まさか」で対応しようかなと思いました。
仰せの通り変更したところばっちり思った通りに動きました。後は、改ページしなければベストなのですが、

>●良く行われる方法
>過去ログにも掲載されていると思いますが、印刷する枚数に応じたレコード数を
>書き出したワーク様の表を作り、この表で一気に印刷する方法が昔から行われて
>おります。

実は、この表もワーク用で、個人的な見解ですが、ワーク表を何階層も作るのは間違いの元になりそうで好みません、
良い方法はないでしょうか、

22376 ワーク表 佐田 守弘 2003/09/16-20:10
記事番号22373へのコメント
morimoriさん
>ワーク表を何階層も作るのは間違いの元になりそうで好みません、
>良い方法はないでしょうか、

ワーク表を何階層も作ることがシステム上問題になるのではなくて、後からその表が
ワーク表であるかどうか、削除しても構わない表であるかどうかの判断が付かなくなる事が問題なのでしょうね。
対策は以下の通りです。

1)ワーク表は使い終わったらすぐに削除する
元表から書き出すだけのワーク表であれば、書き出しでいつでも作れるわけですから、
使い終わったらすぐに削除してしまうのが間違いない方法です。
一括処理やイベントを使いこなせる方であれば、簡単にできると思います。

2)ワーク表であることをファイル名ないしは表題に明記しておく
一方、特別の仕組みを持たせたワーク表もあります。
少し下のツリーにも書いたかと思いますが、テキストファイルを読み込み、
読み込んだ元データの加工までを行ってしまう読み込み用のワーク表です。
この様なワーク表は、そのワーク表の中にノウハウが詰め込んであるので、削除はできません。
この様な保存しておくワーク表は、例えばファイル名に「WK○○管理」の様な名前を付けて、
ワーク表である事がすぐに分る様にしておきます。
あるいは表題に「WK:○○読み込みと計算用」の様なタイトルを付けて、
保存するワーク表である事を明記しておきます。

逆に、すぐに捨てて構わないワーク表は、「×:一時用ワーク保存不用」としておき、表題で
要不用の判断ができる様にしておくのも方法かと思います。
なお、表題の付け替えも一括処理コマンドで可能です。

佐田守弘(KS-00119)

22382 Re:ワーク表 morimori 2003/09/17-09:38
記事番号22376へのコメント
佐田さんこんにちは、

>>ワーク表を何階層も作るのは間違いの元になりそうで好みません、
>>良い方法はないでしょうか、
>
>ワーク表を何階層も作ることがシステム上問題になるのではなくて、後からその表が
>ワーク表であるかどうか、削除しても構わない表であるかどうかの判断が付かなくなる
>事が問題なのでしょうね。
>対策は以下の通りです。

そうです。
プログラムの問題ではなく個人の容量の問題です。
色々注意点有り難う御座います。私も色々考えましたがワーク表を使うのがより完璧な物が出来そうですね、
挑戦したいと思います。

戻る