フック一覧 Check (項目フック) 前の項目フック 次の項目フック

VB C# ALL プログラミング言語によるフィルタ (ここで選んだ言語で選別された説明や図だけが表示されます)

Check (入力チェック) 項目フックメソッド

役割 (この項目フックメソッドに委託されている処理)

この項目にインプットされた値それだけの単項目チェックを行う。なお、必要ならば、インプットされた値を強制的に変更することもできる。

配置 (ツーピーススタイルの場合にこの項目フックメソッドをどこに配置できるか)

セントラルピースに配置するか、または配置しない。ローカルピースに配置することは禁止されている。

代表的な書き方 (詳しい構文はフックメソッドの書き方を参照)

VB での書き方:
 Friend Function Check(パラメタ宣言列) As Integer
 または
 Friend Function 項目略称_Check(パラメタ宣言列) As Integer

C# での書き方:
 internal int Check(パラメタ宣言列)
 または
 internal int 項目略称_Check(パラメタ宣言列)

Java での書き方:
 int Check(パラメタ宣言列)
 または
 int 項目略称_Check(パラメタ宣言列)

なお、フック名としては、Check の他に入力チェックを用いることができる。

呼び出される契機 (以下が切っ掛けとなりこのフックメソッドが呼び出される)

この項目へのデータのインプットが完結したとき。

詳しくいうと、次のいずれかのときである。

戻り値の意味とデフォルト動作 (戻り値による ItemBase への伝言)

ItemBase.CHECK_OK (= 0): 項目の単項目チェックが OK である。

n (1 以上の整数) または ItemBase.CHECK_NG (= 1): エラーコード n のエラーの検出がなされた。なお、RelCheck 系フックメソッドのエラーと区別するために、Check 系フックメソッドで検出したエラーは、10000 より小さい値にすることをお勧めする。

(このエラーコード n は、Response フックメソッドおよび ErrorMsg フックメソッドの Cd_Error パラメタの値になる)

デフォルト動作: Check 項目フックメソッドが組み込まれていない場合の動作は、ItemBase.CHECK_OK が設定された場合と同様である。

代行メッセージ (処理の流れに応じて発せられるメッセージ; カスタマイズ可能)

メッセージコード: "PRECHECK1"

"この項目にはインプットが必要です。"

メッセージコード: "PRECHECK2"

"この項目には左端から右端まで文字をインプットしてください。"

メッセージコード: "RECALC"

"ヘッド部またはテール部の項目を変更したため、 ボディ部または拡張ボディ部の項目に エラー個数 個のエラーが検出されました。"
 "カーソルをエラーの項目に移動して修正してください。"

使用上のヒントと注意事項

単項目チェックを行う際にセントラル側の特定の資源 (データベースの参照など) が必要な場合には、この項目フックメソッドを用いるのがよい。セントラル側およびローカル側の特定の資源を必要としない場合には (あるいは双方に同じ資源がある場合には)、項目フックメソッド CheckLC を用いるのがよい。

Check フックメソッドの中で、チェック対象の項目 (すなわちこの項目) の値を強制的に変更したい場合には、この項目を ByRef 指定のパラメタとして、このフックメソッドの中で変更することができる。あるいは、ItemBase の setValue メソッドで変更することもできる。

Check フックメソッドの中で、チェック対象の項目 (すなわちこの項目) の値を強制的に変更したい場合には、 ItemBase の setValue メソッドで変更することができる。

このフックメソッドのパラメタとして、この項目の縦の合計値 (Su_項目略称) を指定しないことをお勧めする。なぜなら、合計値にはこの項目の最新の値が反映されていない。

関連事項

単項目チェックではなく、複数の項目の関係をチェックする項目群フックメソッドに RelCheck および RelCheckLC がある。

このフックメソッドの戻り値が 0 の場合 (またはこの項目フックメソッドが組み込まれていない場合)、まず関連をもつ項目フックメソッド Derived または DerivedLC が呼び出され、さらにその後に関係をもつ項目群フックメソッド RelCheck または RelCheckLC が呼び出される。 そして、ステータス表示域がクリアされる。

このフックメソッドの戻り値が 1 以上の場合、その値は画面フックメソッド ErrorMsg に伝えられる。

このフックメソッドの後には、戻り値にかかわらず、ローカル側で項目フックメソッド Response が呼び出される。

使用例

' 発注元コードが入力された場合に、そのチェックを行う。
Friend Function 入力チェック(ByVal fB As FormBase, ByVal 発注元コード As String) As Integer
    If 発注元コード = String.Empty Then
        Return 200 ' エラーコード 200
    Else
        Dim 戻り値 As Integer = CType(fB.myFormHook, 受注業務).発注元レコード.SelectEqual(発注元コード)
        If 戻り値 = 0 Then ' コード項目が見つかった。
            Return ItemBase.CHECK_OK ' 正常終了。
        Else
            Return 200 ' エラーコード 200
        End If
    End If
End Function ' 入力チェック
// 発注元コードが入力された場合に、そのチェックを行う。
internal int 入力チェック( FormBase fB, string 発注元コード ) {
    if (発注元コード == string.Empty) {
        return 200; //エラーコード 200
    }
    else {
        int 戻り値 = ((受注業務)fB.myFormHook).発注元レコード.SelectEqual(発注元コード);
        if (戻り値 == 0) { // コード項目が見つかった。
            return ItemBase.CHECK_OK; //正常終了。
        }
        else {
            return 200; //エラーコード 200
        }
    }
} // 入力チェック
// 発注元コードが入力された場合に、そのチェックを行う。
int 入力チェック( FormBase fB, String 発注元コード ) {
    if (発注元コード.length() == 0) {
        return 200; // エラーコード 200
    } else {
        int 戻り値 = ((受注業務) fB.myFormHook).発注元レコード.SelectEqual(発注元コード);
        if (戻り値 == 0) { // コード項目が見つかった。
            return ItemBase.CHECK_OK; // 正常終了。
        } else {
            return 200; // エラーコード 200
        }
    }
} // 入力チェック