過去の桐井戸端BBS (桐ver.8)
2825 イベントで印刷枚数の指定 Rockey 1999/10/3-16:14
いつも勉強させていただいています。
さて、V8イべントで質問です。

画面伝票フォームで各行の項目の[枚数]に入力して、
入力された枚数分を印刷する処理を考えています。
コマンドボタンが押されたら次の処理を行うように
しました。
*---------------------------------------------*
1 &I=1
2 ジャンプ 行番号=&I
3 繰り返し (.NOT #EOF)
4 絞り込み 行数 = 1
5 &枚数 = [枚数]
6 繰り返し &Y=1,&枚数,1
7 書き出し 表,&PTBL,追加
8 繰り返し終了
9 絞り込み解除 1
10 &I=&I+1
11   ジャンプ 行番号=&I
12 繰り返し終了
13 表 &PTBL,表番号=5,モード=参照
14 レポート印刷 "****.RPT"
15 終了 表 5
*-----------------------------------------------*
上記の記述はKEVファイルの手続き定義開始から
手続き定義終了までの記述の一部ですが、
トレース出力ウインドウで確認すると
5行目の代入コマンドが実行されていないらしく
変数 &枚数には全部 0 が入っているようです。
ですから書き出ししません。
以前、一括処理で同じような処理を行ったときは
動いたのですが、イベントでは何か制約があるのでしょうか?
マニュアルを見る限りではイベントの表示状態では
使用可となっていますが.........

イベントではデバッグができないので、表の状態が
どうなっているのか確認できませんね

よろしくお願いします。
2834 Re: 悲しげ 1999/10/5-16:30
記事番号2825へのコメント
どもっ、Rockeyさん、
私も似たようなことをやったことがあります。
結局はふたつのwfmとkevを使いました。以下にkevの方だけ
一部書き換えてみましたので、参考になれば幸いです。
(オブジェクト名「b*」はボタンです)

----------- 書き出し前の方のkev ----------------
名札 メイン
変数宣言 整数{&I,&Y,&枚数},文字列{&PTBL="書出後.TBL"}
/*ふたつのフォームとも多重化を許可してある、よく判らんが*/



手続き定義開始 b実行::マウス左ダウン(長整数 &マウス位置[2],長整数 &明
細番号,長整数 &フラグ,参照 長整数 &処理中止)
編集表 &PTBL
行削除 *,圧縮
*終了 表 &PTBL  /* 終了できない? */
編集表 "書出前.TBL"
&I=1
ジャンプ 行番号=&I
繰り返し (.NOT #EOF)
絞り込み 行数 = 1
&枚数 = [枚数]
繰り返し &Y=1,&枚数,1
  *書き出し 表,&PTBL,追加
  /*表を終了できなかったので書き出しではなく読み込みにした*/
  編集表 &PTBL
  ジャンプ 行番号=終端
  読み込み 表,"書出前.TBL",編集表=する,終了状態=&実行リターン,*
繰り返し終了
 編集表 "書出前.TBL"
絞り込み解除 1
&I=&I+1
ジャンプ 行番号=&I
繰り返し終了
*表 &PTBL,表番号=5,モード=参照
*レポート印刷 "****.RPT"
*終了 表 5
ウィンドウ位置 最小化,&hwindow
フォーム呼出し "書出後.wfm",許可作業=なし
method @b終了.実行()
手続き定義終了

手続き定義開始 フォーム::フォーム開始(長整数 &表番号)
表 &PTBL
手続き定義終了

----------- 書き出し後の方のkev ----------------
名札 メイン



手続き定義開始 b印刷::マウス左ダウン(長整数 &マウス位置[2],長整数 &明
細番号,長整数 &フラグ,参照 長整数 &処理中止)
確認 "用紙をセットして下さい"
確認 "ありゃ、rptが無かったね(^^;)"
method @b終了.実行()
手続き定義終了
2835 Re: Rockey 1999/10/5-18:35
記事番号2834へのコメント

悲しげさん、早速のコメントありがとうございます。

でも、半日悩んでいましたらなぜかできてしまったのです。
どこを直したかも、さだかではありません。

KEVファイルの内容は次のとおりです。

*--------------------------------*
1 手続き定義開始 印刷処理 ()

2 表 &PTBL,表番号=5,モード=専有
3 行削除 *,圧縮
4 終了 表 5
5 &I=1
6 ジャンプ 行番号=&I
7 繰り返し (.NOT #EOF)
8 絞り込み 行数 = 1
9 &枚数 = [枚数]
10 繰り返し &Y=1,&枚数,1
11 書き出し 表,&PTBL,追加
12 繰り返し終了
13 絞り込み解除 1
14 &I=&I+1
15    ジャンプ 行番号=&I
16 繰り返し終了
17 ジャンプ 行番号=先頭行
18 表 &PTBL,表番号=5,モード=参照
19 レポート印刷 "****.RPT"
20 終了 表 5
 
21 手続き定義終了
*--------------------------------*
画面伝票形式のフォームを開いておき、[枚数]に
任意の数字を入力。
印刷ボタンを押したら、先頭行から枚数分を
印刷する仕組みです。
とりあえず動いたのでご報告します。

戻る