メインコンテンツへスキップ

エラー

コメント

25件のコメント

  • nkmt

    印刷指示画面などで、範囲指定の大小チェックがおかしいなど、そのエラーは無視して画面を閉じる場合(終了してもいい場合)、取消終了イベントを発行する場合があります。

    データをメンテナンスするような画面の場合、そのエラーを放置、エラー状態でレコード保存されてはいけないような場面では今のがいいと思います。

  • yamamoto

    nkmtさん、コメントありがとうございます。

    得意先コードなどの入力がないまま、進まないようにはしたいのですが

    明細の入力がない場合は終了ボタンを押下してもエラー表示されないようにしたいと考えています。

    上記では、無視するエラーか無視しないエラーの2択ですがどちらも状況に合わせて変えていこうとすると難しいでしょうか。

  • nkmt

    明細の入力有無は、
    明細WF?等をDBRECSや、
    あるいは自力で変数で入力行数を保持するなどで可能でしょうね。

  • yamamoto

    nkmtさん、コメントありがとうございます。

    得意先コード入力なし、明細入力なしでエラー表示なしといった条件式では

    得意先コードを空欄なまま入力が進み、明細入力時に初めてエラー表示がされてしまう形になってしまうので

    明細入力の有無を条件式に盛り込むのは難しいと考えているのですが

    だからといって他に良い条件が思い浮かぶ訳でもなく、、、、。

    皆さまの知恵をお借りできればと投稿しております。

  • nkmt

    私は基本的に、得意先コード等それが鑑項目であり、必須入力項目なら
    それらがマスタに存在しない値もエラーにしますし、未入力でもエラーにしております。
    鑑項目で必須項目等をちゃんと入力が出来て、ようやく明細へ進むプログラムばかり作っております。

    伝票画面を開いて、即終了の場合、エラーチェックも基本的には動かないはずです。

    何か入力をし始めたら、全てのエラーチェックも走るもんです。

    入力をし始めたけど、やっぱり途中でやめて終了して欲しい時は、
    キャンセルイベントのボタンと終了ボタンを押してもらうか
    取消終了イベントが走るようにするとか。

    あと終了ボタンに変数を割り当てた方が都合がいい場面と
    変数を割り当てない方がいい場面と有ると思います。

  • yamamoto

    nkmtさん、コメントありがとうございます。

    実は上記のnkmtさんが作成されているPGと同じ種類のエラーで作成しているのですが、

    伝票画面を開いて即終了の場合でも、エラー表示されてしまうのです。

    コントロール検証で作成しているからかと思いコントロール後で作成してみたりもしたのですが

    コントロール後だとやはり高速モードの際、抜けられてしまうので、、、。

    それか、やはり明細入力がない場合は取消終了にしてもいいかもしれませんね。

  • nkmt

    > nkmtさん、コメントありがとうございます。
    > 実は上記のnkmtさんが作成されているPGと同じ種類のエラーで作成しているのですが、
    > 伝票画面を開いて即終了の場合でも、エラー表示されてしまうのです。
    >-----------------------------------------------
    メインソースの値を更新しているか
    データビューの一部=YESになっている変数を更新している
    のかもしれませんね。

    > コントロール検証で作成しているからかと思いコントロール後で作成してみたりもしたのですが
    > コントロール後だとやはり高速モードの際、抜けられてしまうので、、、。
    > それか、やはり明細入力がない場合は取消終了にしてもいいかもしれませんね。

  • yamamoto

    nkmtさん、コメントありがとうございます。

    上記、お答えいただいた内容には当てはまらなそうなのですが、

    これはエラー自体のお話ではなくエラーの前の項目でということもありますか?

  • nkmt

    終了ボタンに変数が設定されいるとすれば、
    何も入力していなくても
    終了ボタンに至るまでの全コントロール検証を通ると思います。

    終了ボタンに変数が設定されておらず
    何も入力もせず
    終了ボタンクリックで
    得意先コード入力のコントロール検証が実行される感じですか?

    タスク特性の強制レコード後がYESになっていますか?

  • yamamoto

    nkmtさん、コメントありがとうございます。

    終了ボタン自体には変数の設定等ありません。

    >終了ボタンに変数が設定されておらず
     何も入力もせず
     終了ボタンクリックで
     得意先コード入力のコントロール検証が実行される感じですか?

    仰る通りです。

    タスク特性の強制レコード後もNoになっていました。

  • nkmt

    一部繰り返しになりますが
    そのタスク内で
    ・メインソースの値を更新しているか、あるいは
    ・データビューの一部=YESになっている変数を更新している か
    子タスク等で更新したりしていませんかね?

  • yamamoto

    nkmtさん、コメントありがとうございます。

    先ほどはエラーで更新が行われているかを確認してしまっていたので、

    PGを開いた時点で更新が行われている値がないか確認してみます!

  • yamamoto

    データビューで初期値として代入を行っているのですが、それが原因でしょうか?

  • nkmt

    > データビューで初期値として代入を行っているのですが、それが原因でしょうか?
    メインソースの項目に代入式が設定されているのは問題ないと思います。
    デバッグモード、ステップモードで実行して、変数に値を項目更新しているとして、
    その変数が データビューの一部=yes になっていると良くないと思います。

  • nkmt

    入力画面を開いて、CTRL+F2 キャンセル 又は F2 キャンセル、ESCかF9 でも得意先コードを入力しなさいといったエラーが走るんですよね?

  • yamamoto
     
    nkmtさん、コメントありがとうございます。
     
    >入力画面を開いて、CTRL+F2 キャンセル 又は F2 キャンセル、ESCかF9 でも得意先コードを入力しなさいといったエラーが走るんですよね?
     
    仰る通りです。
     
    確認してみましたが、開いただけでは項目更新する値はなさそうでした。
  • yamamoto

    自分の考えで試しに条件式にNOT(KbPut(’ESC'KBD))を入れてみましたら、

    得意先コード欄で終了してしまいまいした。

  • nkmt

    そうですね、たまにやります。終了イベントならエラーは無視するとか書く事もあります。
    ちなみにこの場合は
    KBPUT ではなく
    KBGET ですね。
    KBGET(1)='終了'EVENT とか・・・
    KBGET(0)='F9'KBD とか

  • yamamoto

    nkmtさん、ありがとうございます。

    KbGetの(1)や(0)はどういった意味になりますか?

    念のため、変数でデータビューの一部となっていたものは全てNoにしましたが変わりませんでした。

  • nkmt

    イベント判定の時は、KBGET(1)
    キーボード判定の時は、KBGET(0)です。

    でもRIAでは気を付けないといけないみたいな事が書いてあります。

    KbGet

    直前のキー入力

    直前のキー入力、または内部イベントを取得します。

    構文:

    KbGet(数値)

    パラメータ:

    • 数値 …… アクションの場合は「1」、キーの場合は「0」を指定します。

    戻り値:

    文字列

    例:

    KbGet (0)

     

    F2キーが押されていれば「F2」という文字列が返ります。

    例外:

    リッチクライアントタスクではサポートされません。リッチクライアントでこの関数の動作を組み込むには、[イベント実行]処理コマンドとi[イベント]ロジックユニットを使用してください。

  • nkmt

    すみません、そういえばRIAだと親タスクもサブフォームもいっぺんに実行されるみたい点がなんかクラサバと違ったような気もしてきました。サブフォームのタスク前がどうのこうのあったような気がします。詳しい方お願いします。

  • yamamoto

    nkmtさん、ありがとうございます。

    早速、条件式にNOT(KbGet(0)='F9'KBD)と入れてみたのですが

    やはりだめでした、、、。

    明日また、いちから伺った確認箇所を確認してみます。

  • yamamoto

    nkmtさん、先日はありがとうございました。

    本日見直しを行ったところ、サブタスクでデータビューの一部=Yes,項目の更新があった項目が見つかり解決できました!

    ありがとうございます!

  • nkmt

    良かったです。書込みありがとうございました。
    処理を制御するだけの役目の変数などは、
    データビューの一部=Noにするようにしていくのもいいと思います。

  • yamamoto

    nkmtさん、コメントありがとうございます。

    そうですね。全体的に処理制御するための変数は、もう同じことにならぬようNoにしてみます!

    最後までお付き合いいただきありがとうございました!

サインインしてコメントを残してください。