過去の桐井戸端BBS (桐ver.9)
17998 一括処理である項目に数字が入ったときと入っていないときとで印刷するレポートを切り替えたい 松井正幸 2002/11/21-16:09
桐v9を使って一括処理を組んでいます。
少々動作が??なのですが、よろしくご指導ください。

まず、何がしたいかですが。
宛名用のはがきに印刷したいのです。
はがきのレポートは2種類です。
はがき.rpt
はがき2.rptの2種類あります。
まず、入力項目ですが
[種類][数量][数量2]で、
[数量]に数字をいれれば はがきで印刷する。
[数量2]に数字が入れば、はがき2で印刷する。
といった内容です。

下の一括処理を組んでみました。
ところが、入力段階で、[数量2]にデータが入ってもはがきで印刷してしまいます。
なぜでしょうか?
よろしくご指導ください。


---------------------------------
変数宣言 共通,数値,{&部数,&位置}


表  "台帳"
置換 [NO]=#連番
ジャンプ 行番号=先頭
絞り込み [数量]<>""
条件 (#空ファイル)分岐 処理2
&位置=[NO]
繰り返し (.not#終端行)
  絞り込み [NO]{=&位置}
  &部数=[数量]
  レポート印刷 "はがき.rpt",繰返し数=&部数
  絞り込み解除 1
  &位置=&位置+1
  ジャンプ 行番号=&位置
  &位置=[NO]
*表形式編集
繰り返し終了  
絞り込み解除

名札 処理2

ジャンプ 行番号=先頭
&位置=[NO]
絞り込み [数量]=""
&位置=[NO]
繰り返し (.not#終端行)
  絞り込み [NO]{=&位置}
  &部数=[数量2]
  レポート印刷 "はがき2.rpt",繰返し数=&部数
  絞り込み解除 1
  &位置=&位置+1
  ジャンプ 行番号=&位置
  &位置=[NO]
繰り返し終了  
絞り込み解除
使用フォーム  "台帳" 
フォーム形式編集

18002 Re:一括で質問です。 KH 2002/11/21-18:21
記事番号17998へのコメント

>ところが、入力段階で、[数量2]にデータが入っても
>はがきで印刷してしまいます。

>---------------------------------

>絞り込み [数量]<>""
>条件 (#空ファイル)分岐 処理2

#空ファイルは純粋に編集対象表ファイルのレコードの有無をチェックするため、
絞込みの状態はチェックしないのではないでしょうか?
絞り込み後、項目集計して、&有効件数または&選択件数>0で判断すると
解決するのではないでしょうか。
18004 Re:一括で質問です。 悲しげ 2002/11/21-19:16
記事番号17998へのコメント
どもっ、松井さん
>[数量]に数字をいれれば はがきで印刷する。
>[数量2]に数字が入れば、はがき2で印刷する。
>・・・
>ところが、入力段階で、[数量2]にデータが入っても
>はがきで印刷してしまいます。

可能性としてありうるのは、例えば、[数量2]に値が入っていても、
[数量]にも値が入っていたら上記のようなことは起こりますね。
このようなことを避けるためには、例えば、絞り込み/補集合を利用するのもひとつの方法です。
その線で一括処理を書き換えれば(ついでに「分岐」ではなく「手続き実行」で記述も共用させて)
---------------------------------
変数宣言 共通,数値,{&部数,&位置},文字列{&RPT}
表 "台帳"
置換 [NO]=#連番
絞り込み [数量2]>0
条件(&選択件数>0) 手続き実行 印刷処理(2)
絞り込み 補集合 /*または 絞り込み [数量2]<1 */
条件(&選択件数>0) 手続き実行 印刷処理(1)
・・・・・

手続き定義開始 印刷処理(長整数 &受け数)
 &位置=[NO]
 繰り返し(.not #終端行)
  絞り込み [NO]{=&位置}
  &部数=#条件選択(&受け数=2,[数量2],1,[数量])
  &RPT="はがき"+#条件選択(&受け数=2,"2")+".rpt"
  レポート印刷 &RPT,繰返し数=&部数
  絞り込み解除 1
  &位置=&位置+1
  ジャンプ 行番号=&位置
  &位置=[NO]
 繰り返し終了  
手続き定義終了
---------------------------------
18005 Re:一括で質問です。 悲しげ 2002/11/21-19:22
記事番号18002へのコメント
どもっ、KHさん

>#空ファイルは純粋に編集対象表ファイルのレーコードの有無をチェック
>するため、絞込みの状態はチェックしないのではないでしょうか?

いえ、#空ファイル関数は、絞り込み状態では&選択件数=0と同じ結果となります。試してみれば判ります。
18013 Re:一括で質問です。 うにん 2002/11/22-00:15
記事番号18005へのコメント
悲しげさん
>どもっ、KHさん
>
>>#空ファイルは純粋に編集対象表ファイルのレーコードの有無をチェック
>>するため、絞込みの状態はチェックしないのではないでしょうか?
>
>いえ、#空ファイル関数は、絞り込み状態では&選択件数=0と同じ結果
>となります。試してみれば判ります。

あれ〜、ほんとだ。これってバグじゃないですか?でなければ、HELPがまちがってますね。

絞り込んだ直後に選択件数が0かどうかは#EOFでわかるのだから、
これでは#空ファイルが無用な関数になってますね(^^;
もっとも、HELPのとおりに「編集対象表にレコードが登録されているかどうか」調べられたとしても、
ちょっと使い道が思いつかないな... 表を開いた直後でも、空かどうかは#EOFでわかりますし。

18018 Re>#空ファイル 悲しげ 2002/11/22-13:36
記事番号18013へのコメント
どもっ、うにんさん
>あれ〜、ほんとだ。これってバグじゃないですか?
>でなければ、HELPがまちがってますね。

仕様的にはDOS版から一貫してそうだったと記憶しています。
これは#総件数についても同様でして、#総件数の場合は、DOS版では
「選択状態の場合」についての言及があるが、Win版(V8)では無言及です。
ま、絞り込み状態ってのは実態的には別表らしいですから、あながち間違っているとは云いきれないような・・・(^^;)、だから
バグと云うよりはHELPの補記もれってところでしょうね。
選択状態の判断は、&選択件数、#EOF、#空ファイル、#総件数・・・
と色々使えていいんじゃないでしょうか。いまさら仕様をHELPに
合わせるより、HELP訂正の方に一票。

戻る