過去の桐井戸端BBS (桐ver.9)
18878 桐v8の一括処理を桐v9に移行したら自動的にカーソルが移動しなくなった 2003/02/08-12:04
助けて下さい。
下記のようなVer.8での一括処理をVer.9に移行したら自動的にカーソルが移動しなくなってしまいました。
いちいちマウスでは移動しますが・・・。

表 ”××××”
カーソル移動方向 ↓
表表示
&行番号=1
位置指定 行番号=T
繰り返し(.NOT #終端行)
行訂正 表、[項目名]
&行番号=&行番号+1
繰り返し終了

実行ウインドウを使用しております。全く原因がわからなく困っています。
イベント処理は現在勉強中ですが、これまでのものをVer.9に変換したくております。
よろしくお願いします。
18879 Re:Ver.9における一括処理について うにん 2003/02/08-13:13
記事番号18878へのコメント
繰り返しの中で「ジャンプ 行番号=+1」が抜けてるようですが。

18882 Re:Ver.9における一括処理について 2003/02/08-15:55
記事番号18879へのコメント
うにんさん、ありがとうございます。
>繰り返しの中で「ジャンプ 行番号=+1」が抜けてるようですが。

ご指摘の一行を追加すると、確かにカーソル移動はしますが、途中で入力間違いに気がつき戻ろうとすると、
マウスでクリックした行の下にカーソルが移動してしまいます。
ですから、一番上の行は一度終了しないと再度の入力はできないのです。
ご指摘の一行の追加場所が悪いのかなぁ?
 しかし、今も再度確かめたのですが、Ver8では、ちゃんと実行してくれるんですが・・・・・?

18884 Re:Ver.9における一括処理について うにん 2003/02/08-16:37
記事番号18882へのコメント
> しかし、今も再度確かめたのですが、Ver8では、ちゃんと実行してくれるんで
>すが・・・・・?

そうですかあ。
9になってカーソル移動方向による行移動のタイミングが変わったんでしょうかね?
「実行後の処理対象行 行訂正を終了した行。」と書いてあるので、
ジャンプしないと訂正した行から動かないのは確かです。
8で動くということは、8ではカーソルが移動してから行訂正が終了していたといことでしょうか。

複数行連続して訂正したいなら、
「*,<項目名>」の書式を使えば繰り返しは不要だと思いますが。

表 ”××××”
カーソル移動方向 ↓
位置指定 行番号=T
行訂正 表、*,[項目名]

18889 Re:Ver.9における一括処理について 2003/02/09-08:31
記事番号18884へのコメント
うにんさん、おはようございます。昨日のうちお礼を言えなくて申し訳ありませんでした。
>表 ”××××”
>カーソル移動方向 ↓
>位置指定 行番号=T
>行訂正 表、*,[項目名]
>
複数の項目を複数行、訂正(入力)するとき(たとえば五科目の点数入力)でも
上のご指摘は有効ですか?
でも、再度苦言をいえば(うにんさんにではなく)8で動いていたものが9で動かなくなるってあるのですか。
これでは、9を買わなきゃよかったと思ってしまいます。
こういうことってあるものなのですか?
18895 Re:Ver.9における一括処理について 2003/02/09-16:37
記事番号18889へのコメント
なお、付け加えますが訂正入力する前に必要な項目だけ表示させて、
必要なデータ数だけ入力後表を閉じさせ、表を元の状態にして次の一括処理に移っています。
よろしくお願いいたします。


18896 書式が違うだけのようです 今村 誠 2003/02/09-19:22
記事番号18895へのコメント
こんにちは
表が開いているとすれば下記のコマンドで訂正できると思います

var Long{&現在行,&終了状態,&押釦,&処理,&行位置}
 movewin 最大化,-1
 ジャンプ 行番号=先頭
 表表示
 ウィンドウリスト取得 &処理
 ウィンドウ位置 最大化,&処理
 繰り返し (.not #EOF)
  行訂正 会話,[項目名を書きます], 終了キー=&押釦, 終了状態=&終了状態 /* 確Enter=26*/
  &行位置=#計算(#SET(現在行,#行番号+1),#行番号)
  cond(&押釦=27) 繰り返し中止  /* 取り消しEsc=27が押されたとき*/
  ジャンプ 行番号=&現在行
 繰り返し終了

18904 V5形式の一括ですね 佐田 守弘 2003/02/10-00:40
記事番号18889へのコメント
藍さん
#18878に掛れている一括処理のコマンドは、
 >実行ウインドウを使用しております。
と書かれている様に、V5形式の一括処理の書き方ですね。

●一括処理実行ウィンドウ
一括処理実行ウィンドウは、桐ver.5からWindows版桐に移行する際に、
従来の一括処理をとりあえずは動かす機能を確保するために用意されている機能です。
これはWindows版桐(桐6以降、但し桐ver.6では一括の機能なし)では
本来の一括処理の使い方ではありません。

一括処理ウィンドウを使ったV5形式の一括処理は、何かと制限が多いものです。
頭の切替が必要ではありますが、桐ver.8ないし9が持つ本来の一括処理形式
あるいはイベント形式で作られる事をお薦めします。

●行訂正コマンドについて
私は桐ver.8でこのコマンドを使った事はないので、詳しい事は申し上げられませんが、
桐ver.5時代のこのコマンドの使い方で言えば、行訂正コマンドは処理対象行1行の行訂正を行い、
終了後は処理対象行は移動しないはずと記憶しています。
つまり、次の行に移動するには、ジャンプコマンドが必要と思います。
もし桐ver.8で、行訂正コマンドを終了した後で、処理対象仰臥移動するとしたら、
むしろこれは障害(バグ)であり、桐ver.9で訂正されたと考えるべきではないでしょうか。

佐田守弘(KS-00119)
18908 Re:Ver.9における一括処理について 2003/02/10-08:01
記事番号18907へのコメント
うにんさん、今村さん、佐田さんありがとうございました。
いつまでの過去の産物にしがみついていてはだめと言うことですね。
イベント処理を勉強します。
今後ともご指導よろしくお願いいたします。

18909 Re:Ver.9における一括処理について うにん 2003/02/10-09:41
記事番号18884へのコメント
>そうですかあ。9になってカーソル移動方向による行移動のタイミングが
>変わったんでしょうかね?
>「実行後の処理対象行 行訂正を終了した行。」と書いてあるので、ジャンプ
>しないと訂正した行から動かないのは確かです。8で動くということは、8では
>カーソルが移動してから行訂正が終了していたといことでしょうか。

佐田さん同様、むしろ8のバグではないかと思って上のように書きましたが、

>複数行連続して訂正したいなら、「*,<項目名>」の書式を使えば繰り返しは不要
>だと思いますが。
>
>表 ”××××”
>カーソル移動方向 ↓
>位置指定 行番号=T
>行訂正 表、*,[項目名]
確認 #STR(#行番号)

この書式だと任意の行の任意の項目が訂正可能なので、終端行に移動するまで
行訂正が終了しませんが、終了したとき処理対象行は終端行になっていました。
(Enterで終了しても。)

行訂正 表、[項目名]
1つの項目値のみ訂正するこの書式では、マウスクリックで他の行に移動すると行訂正が終了しますが、
移動後の行が処理対象行になっています。
桐5と違ってマウスが使えるようになったので、仕様があいまいな感じです。
桐5では終了キーで移動方向が拾えたし、移動後の行はせいぜい前後1行だったので、
終了時には元の行が処理対象で、移動はプログラムで行うの方式だった。
Windows版ではマウスで任意行に移動して終了するケースが出てきたわけですが。

なお、#行番号のヘルプに「この関数は、表の編集条件式と、フォームの
編集属性式で使用できます。」というので、他では使えないかと思うと、
次の行に「レポートでは使用できません。」と書いてあります。
実際には上のように一括処理の計算式でも使えるようです。なんだかなあ^^;

18911 Re:Ver.9における一括処理について 2003/02/10-11:40
記事番号18909へのコメント
うにんさん、ありがとうございます。もうちょっと教えて下さい。

表 ”得点入力”
絞り込み  [合否]{=""},文字比較方法=自動
表示幅 {[整理番号]M1270,[受験番号]M1270,[姓]M1270:しない・・・・・
カーソル移動方向 →
表表示
&行番号=1
位置指定 行番号=T
繰り返し(.NOT #終端行)
行訂正 表、[国語]
行訂正 表、[数学]
行訂正 表、[英語]
行訂正 表、[理科]
行訂正 表、[社会]
&行番号=&行番号+1
繰り返し終了
表示幅 {[整理番号]M1270,[受験番号]M1270,・・・・・

一括処理実行 ”×××××”

◎佐田さんのご指摘の通り、友人から借りた古い桐の書籍を参考にして作ったものです。
◎うにんさんのご指摘の通り、人数分だけ入力したら(終端行)訂正終了して次の一括処理にとばさせております。
このとき、番号とか氏名とか必要な項目は表示させてありますが、そこにはカーソルを飛ばさせ、
入力したい項目(上の5つの項目)にカーソルが止まり入力するようになっているのですが・・・。
うにんさんの方法で試したところ番号とか氏名とかにもカーソル移動してしまいます。
勿論、私の説明の悪さだと重いますがもうちょっと教えて下さい。
今までの苦労が水の泡ではちょっと悲しいので・・・。よろしくお願い致します。


18912 Re:Ver.9における一括処理について うにん 2003/02/10-14:07
記事番号18911へのコメント
>繰り返し(.NOT #終端行)
>行訂正 表、[国語]
>行訂正 表、[数学]
>行訂正 表、[英語]
>行訂正 表、[理科]
>行訂正 表、[社会]
>&行番号=&行番号+1
>繰り返し終了

このとき、番号とか氏名とか必要な項目は表示させてありますが、そこにはカーソル
>を飛ばさせ、入力したい項目(上の5つの項目)にカーソルが止まり入力するようになっているの
>ですが・・・。

なるほど、最初の例では項目が1つでしたが、実際は複数の項目を訂正したいわけですね。

>うにんさんの方法で試したところ番号とか氏名とかにもカーソル移動してしまいま
>す。

こういうケースでは、入力用のフォームを作るのが一番だと思います。
入力したくない項目にカーソルを移動しないのは、フォーム定義でできるので、
一括処理は「行訂正 フォーム, * ,[国語],終了キー = &Key,終了状態 = &OK」位でできてしまいます。

Windows版の桐では、マウスクリックで行訂正を終了できてしまいますので、
行訂正コマンド終了で次の項目へ移動、という動作は無理でしょう。
(例えば、上の一括処理では[理科]入力後に[英語]の入力ミスに気づいて
[英語]をクリックしても[社会]にカーソルが行ってしまうと思います。)

「苦労が水の泡」といわれると何ですが、DOS版にはない便利な機能が増えているわけで、
使える機能は使って楽をしましょう(^^)

18913 Re:Ver.9における一括処理について 2003/02/10-14:46
記事番号18912へのコメント
 うにんさん何度もありがとうございました。
佐田さん、うにんさんの言われるとおり、あきらめます。
(今回のぶんはうにんさんの言われるとおり、フォームを作ってみます)桐もバージョンアップするうちに、
いつか「実行ウインドウ」もなくなってしまうんでしょうね。
本当にいろいろとありがとうございました。

戻る