エラー
お世話になっております。
エラー表示が邪魔をして終了ボタン押下で終了できません。
エラーはフローモード=C・フロー方向=Fで作成しているのですが、
何か他に設定する箇所があれば教えて頂きたいです。
-
印刷指示画面などで、範囲指定の大小チェックがおかしいなど、そのエラーは無視して画面を閉じる場合(終了してもいい場合)、取消終了イベントを発行する場合があります。
データをメンテナンスするような画面の場合、そのエラーを放置、エラー状態でレコード保存されてはいけないような場面では今のがいいと思います。 -
nkmtさん、コメントありがとうございます。
得意先コードなどの入力がないまま、進まないようにはしたいのですが
明細の入力がない場合は終了ボタンを押下してもエラー表示されないようにしたいと考えています。
上記では、無視するエラーか無視しないエラーの2択ですがどちらも状況に合わせて変えていこうとすると難しいでしょうか。
-
明細の入力有無は、
明細WF?等をDBRECSや、
あるいは自力で変数で入力行数を保持するなどで可能でしょうね。 -
nkmtさん、コメントありがとうございます。
得意先コード入力なし、明細入力なしでエラー表示なしといった条件式では
得意先コードを空欄なまま入力が進み、明細入力時に初めてエラー表示がされてしまう形になってしまうので
明細入力の有無を条件式に盛り込むのは難しいと考えているのですが
だからといって他に良い条件が思い浮かぶ訳でもなく、、、、。
皆さまの知恵をお借りできればと投稿しております。
-
私は基本的に、得意先コード等それが鑑項目であり、必須入力項目なら
それらがマスタに存在しない値もエラーにしますし、未入力でもエラーにしております。
鑑項目で必須項目等をちゃんと入力が出来て、ようやく明細へ進むプログラムばかり作っております。
伝票画面を開いて、即終了の場合、エラーチェックも基本的には動かないはずです。
何か入力をし始めたら、全てのエラーチェックも走るもんです。
入力をし始めたけど、やっぱり途中でやめて終了して欲しい時は、
キャンセルイベントのボタンと終了ボタンを押してもらうか
取消終了イベントが走るようにするとか。
あと終了ボタンに変数を割り当てた方が都合がいい場面と
変数を割り当てない方がいい場面と有ると思います。 -
> nkmtさん、コメントありがとうございます。
> 実は上記のnkmtさんが作成されているPGと同じ種類のエラーで作成しているのですが、
> 伝票画面を開いて即終了の場合でも、エラー表示されてしまうのです。
>-----------------------------------------------
メインソースの値を更新しているか
データビューの一部=YESになっている変数を更新している
のかもしれませんね。
> コントロール検証で作成しているからかと思いコントロール後で作成してみたりもしたのですが
> コントロール後だとやはり高速モードの際、抜けられてしまうので、、、。
> それか、やはり明細入力がない場合は取消終了にしてもいいかもしれませんね。 -
nkmtさん、コメントありがとうございます。
上記、お答えいただいた内容には当てはまらなそうなのですが、
これはエラー自体のお話ではなくエラーの前の項目でということもありますか?
-
終了ボタンに変数が設定されいるとすれば、
何も入力していなくても
終了ボタンに至るまでの全コントロール検証を通ると思います。
終了ボタンに変数が設定されておらず
何も入力もせず
終了ボタンクリックで
得意先コード入力のコントロール検証が実行される感じですか?
タスク特性の強制レコード後がYESになっていますか? -
nkmtさん、コメントありがとうございます。
終了ボタン自体には変数の設定等ありません。
>終了ボタンに変数が設定されておらず
何も入力もせず
終了ボタンクリックで
得意先コード入力のコントロール検証が実行される感じですか?仰る通りです。
タスク特性の強制レコード後もNoになっていました。
-
一部繰り返しになりますが
そのタスク内で
・メインソースの値を更新しているか、あるいは
・データビューの一部=YESになっている変数を更新している か
子タスク等で更新したりしていませんかね? -
nkmtさん、コメントありがとうございます。
先ほどはエラーで更新が行われているかを確認してしまっていたので、
PGを開いた時点で更新が行われている値がないか確認してみます!
-
データビューで初期値として代入を行っているのですが、それが原因でしょうか?
-
> データビューで初期値として代入を行っているのですが、それが原因でしょうか?
メインソースの項目に代入式が設定されているのは問題ないと思います。
デバッグモード、ステップモードで実行して、変数に値を項目更新しているとして、
その変数が データビューの一部=yes になっていると良くないと思います。 -
入力画面を開いて、CTRL+F2 キャンセル 又は F2 キャンセル、ESCかF9 でも得意先コードを入力しなさいといったエラーが走るんですよね?
-
nkmtさん、コメントありがとうございます。>入力画面を開いて、CTRL+F2 キャンセル 又は F2 キャンセル、ESCかF9 でも得意先コードを入力しなさいといったエラーが走るんですよね?仰る通りです。確認してみましたが、開いただけでは項目更新する値はなさそうでした。
-
自分の考えで試しに条件式にNOT(KbPut(’ESC'KBD))を入れてみましたら、
得意先コード欄で終了してしまいまいした。
-
そうですね、たまにやります。終了イベントならエラーは無視するとか書く事もあります。
ちなみにこの場合は
KBPUT ではなく
KBGET ですね。
KBGET(1)='終了'EVENT とか・・・
KBGET(0)='F9'KBD とか -
nkmtさん、ありがとうございます。
KbGetの(1)や(0)はどういった意味になりますか?
念のため、変数でデータビューの一部となっていたものは全てNoにしましたが変わりませんでした。
-
イベント判定の時は、KBGET(1)
キーボード判定の時は、KBGET(0)です。でもRIAでは気を付けないといけないみたいな事が書いてあります。
KbGet
直前のキー入力
直前のキー入力、または内部イベントを取得します。
構文:
KbGet(数値)
パラメータ:
-
数値 …… アクションの場合は「1」、キーの場合は「0」を指定します。
戻り値:
文字列
例:
KbGet (0)
F2キーが押されていれば「F2」という文字列が返ります。
例外:
リッチクライアントタスクではサポートされません。リッチクライアントでこの関数の動作を組み込むには、[イベント実行]処理コマンドとi[イベント]ロジックユニットを使用してください。
-
-
すみません、そういえばRIAだと親タスクもサブフォームもいっぺんに実行されるみたい点がなんかクラサバと違ったような気もしてきました。サブフォームのタスク前がどうのこうのあったような気がします。詳しい方お願いします。
-
nkmtさん、ありがとうございます。
早速、条件式にNOT(KbGet(0)='F9'KBD)と入れてみたのですが
やはりだめでした、、、。
明日また、いちから伺った確認箇所を確認してみます。
-
nkmtさん、先日はありがとうございました。
本日見直しを行ったところ、サブタスクでデータビューの一部=Yes,項目の更新があった項目が見つかり解決できました!
ありがとうございます!
-
良かったです。書込みありがとうございました。
処理を制御するだけの役目の変数などは、
データビューの一部=Noにするようにしていくのもいいと思います。 -
nkmtさん、コメントありがとうございます。
そうですね。全体的に処理制御するための変数は、もう同じことにならぬようNoにしてみます!
最後までお付き合いいただきありがとうございました!
サインインしてコメントを残してください。
コメント
25件のコメント