過去の桐井戸端BBS (桐ver.8)
8062 行訂正の処理対象行について blue 2000/10/14-03:02
フォームの一覧表形式でデータの訂正をしたいと思っています。
検索でレコードをみつけ、行訂正でそのデータを修正し、
また検索処理にもどりたいのですが

行訂正 フォーム,*,終了キー=&key,終了状態=&OK

とやると、レコードの最終項目でエンターを押したときに
つぎのレコードに処理対象行が移ってしまいます。

そのレコードの行訂正が終わったら処理を一括処理に
もどしたいのですがどうすればいいのでしょうか。
一括処理のリファレンスで、行訂正 会話 のところに

 処理対象行の訂正が終了したらコマンドも終了します。
 終了時の操作は、&Key に代入します。

との記述があるのですが、どうもわかりません。
たんなるコマンドの使い方にすぎませんが、よろしくお願いします。
8067 Re:行訂正の処理対象行について bonito 2000/10/14-14:08
記事番号8062へのコメント
blueさん、こんにちは。
V8のオンラインマニュアル&ヘルプ、そしてV7の「一括」リファレンスを見てみましたが、
私の探している記述は発見出来ず(でも多分どこかに書いてあるはず…)、
仕方なくV5リファレンス2の276頁「行訂正:表」から引用(無断)します。

>複数のレコードを続けて訂正することは出来ますが、
>訂正するレコード数を制限することは出来ません。
>制限したい時はあらかじめ選択してから実行してください。
>  (中略)
>行訂正は次のキーを押したときか、終端行にカーソルが
>移動したとき終了します。

次のキーとは、[F4:表示]か[Esc]だと続きます。
終端行に行くと訂正すべき行がないので自動終了します。

フォームでも伝票や一覧などの複数行フォームでは上記の仕様がいきていて、
行追加などもユーザー側で更新モード変更のあきらかな行動を起こさない限り(Enterのみでは)
延々次の行、次の行と繰りかえされます。

ですからKEVでなくCMDではやはり古典的に、検索してあたりがでたら(終端行でないなら)、
その1行のみ選択して、行訂正、選択解除、あらたな検索と続けるしかないかな?
と思います(昔私はそうしてました)。

KEVなら…これはblueさんがV8とも限らないので又の機会があれば…とします。


8069 Re:行訂正の処理対象行について 佐田 守弘 2000/10/14-15:23
記事番号8062へのコメント
blueさん
犯りたい事は、一括処理で編集するレコードにジャンプさせた後、処理対象行1行に対して、フォーム上で編集を行う。
そして処理対象行の1レコードの編集が終わったら、行訂正コマンドを自動で終了して一括処理に戻りたいという事ですね。

通常の状態では会話処理形式の「行訂正 フォーム」では、1レコードの編集が終われば、
最後のテキストボックスの[編集]のタブにある「改行方向」に設定してある次のテキストボックスに移動します。
デフォルトではここに「継承」が設定してあり、次のレコードに移動するはずです。
これは「次行」に設定しても同じです。
「終了」を設定すれば、編集が終わると処理対象行の表示モードに戻りますが、
行訂正コマンドはそれだけでは終了しないはずです。
つまり、「行訂正 フォーム」は、フォームを終了して初めてコマンドが終了します。
ですから、質問されているような状態になります。

●1レコードの編集が終了したらフォームを終了させたい
@まず「終了」とでも表示したコマンドボタンを作って下さい。オブジェクト名は「c終了」としておきます。
このボタンには「一括処理に戻る」を設定して下さい。
つまり、このボタンを押せば、フォームを終了して一括処理に戻ります。
機能としては、フォーム右上の「閉じる」ボタンと同じ動作になります。
A次にフォームの最後のテキストボックスには、「ソース値更新」イベントを設定し、
対応するイベントハンドラの中で次のコマンドを実行させて下さい。
メソッド呼び出し @c終了.実行()
これにより、最後のテキストボックスの値を更新した時、つまりフォームの最後の編集が終わったら、
イベントが発生し、メソッド呼び出しコマンドによって、先程の[終了]ボタンが実行されます。

@の[終了]ボタンはマウス操作で行っても構いませんが、マウス操作を行う事がないのであれば、
非表示に設定して隠してしまっても構いません。

多分ソース値更新でよいと思うのですが、うまく行かなかったら、イベントの種類も変えて試してみて下さい。

佐田守弘(KS-00119)

桐ver.5時代はこの処理は大変でした。
「行訂正 帳票 <項目名>」
のコマンドを使い、1項目ずつ項目訂正をして行く方法しかありませんでした。
当然ながら、多数のコマンドを並べなければならず、かつ、後戻りができない方法でした。

8070 Re:行訂正の処理対象行について blue 2000/10/14-16:17
記事番号8067へのコメント
bonitoさんどうもありがとうございました。

>ですからKEVでなくCMDではやはり古典的に、
>検索してあたりがでたら(終端行でないなら)、その1行
>のみ選択して、行訂正、選択解除、あらたな検索と続ける
>しかないかな?と思います(昔私はそうしてました)。
>
>KEVなら…これはblueさんがV8とも限らないので又の
>機会があれば…とします。

そうですね。私もそれを考えたのですが、
せっかっく表形式で編集しているので視認性に富むメリットが失われてしまうようで他の方法を捜していました。

ちなみに私はV8で、V3のころから桐を使っていますがイベント処理はいまだによく使い方がわかりません(^^ゞ

これからもよろしくお願いします。
8072 Re:行訂正の処理対象行について blue 2000/10/14-16:29
記事番号8069へのコメント
佐田 守弘さんどうもありがとうございます。
早速試してみたところなんとかうまくいきそうです。


>桐ver.5時代はこの処理は大変でした。
>「行訂正 帳票 <項目名>」
>のコマンドを使い、1項目ずつ項目訂正をして行く方法しかありませんでした
>。当然ながら、多数のコマンドを並べなければならず、かつ、後戻りができな
>いほう方でした。

そうですね。V8でもその方法しかないのかなぁと思っていましたがDOSではその処理でも十分でしたが、
V8では処理速度の問題(画面描画がおそいためなんですが・・)があって結果が同じなら・・・という訳にいかず、
特に入力部分に関しては入力ミスが多発したために処理をかえようとしていました。
しかし、イベント処理は手元にマニュアルもなくオンラインヘルプだけでは
わかりにくく困っていました。どうもありがとうございました。

8075 Re:行訂正の処理対象行について KH 2000/10/14-20:50
記事番号8062へのコメント
>行訂正 フォーム,*,終了キー=&key,終了状態=&OK
>
>とやると、レコードの最終項目でエンターを押したときに
>つぎのレコードに処理対象行が移ってしまいます。
>
>そのレコードの行訂正が終わったら処理を一括処理にもどしたいのですが
>どうすればいいのでしょうか。
>一括処理のリファレンスで、行訂正 会話 のところに
>
> 処理対象行の訂正が終了したらコマンドも終了します。
> 終了時の操作は、&Key に代入します。
>
>との記述があるのですが、どうもわかりません。
>たんなるコマンドの使い方にすぎませんが、よろしくお願いします。

 このコマンドでやると、佐田先生の仰るようにコマンドの羅列になりますが一応は制御は出来ます。
ただし、行訂正 フォーム,*,終了キー=&key,終了状態=&OK
ではなく、行訂正 フォーム,<項目名>,終了キー=&key,終了状態=&OK
を使い、訂正が必要な項目分だけこのコマンドの羅列が必要となります。
そして、上記の&Keyの所には、ESCが押下されると27、RETが押下されると26が代入されますので、
それで最終項目でRETであれば検索に戻る、ESCであれば前の項目に戻って訂正するなど制御できるはずです。

戻る