フック一覧 CheckC (項目フック) | 前の項目フック 次の項目フック |
VB C# ALL プログラミング言語によるフィルタ (ここで選んだ言語で選別された説明や図だけが表示されます)
★ sss 仕様のフックメソッド (通常の開発では Check をお使いください)
◇ 役割 (この項目フックメソッドに委託されている処理)
この項目にインプットされた値それだけの単項目チェックを行う。なお、必要ならば、インプットされた値を強制的に変更することもできる。
項目フックメソッド Check と同様の役割を果たすものであり、その違いは Check よりも呼び出される機会が少なくなるように最適化されている点である。 具体的には、Enter キーのカラ打ちでは呼び出されないし、再計算 (Recalc) モードにおいては呼び出されない。
◇ 配置 (ツーピーススタイルの場合にこの項目フックメソッドをどこに配置できるか)
セントラルピースに配置するか、または配置しない。ローカルピースに配置することは禁止されている。
◇ 代表的な書き方 (詳しい構文はフックメソッドの書き方を参照)
VB での書き方:
Friend Function CheckC(パラメタ宣言列) As Integer
または
Friend Function 項目略称_CheckC(パラメタ宣言列) As Integer
C# での書き方:
internal int CheckC(パラメタ宣言列)
または
internal int 項目略称_CheckC(パラメタ宣言列)
Java での書き方:
int CheckC(パラメタ宣言列)
または
int 項目略称_CheckC(パラメタ宣言列)
◇ 呼び出される契機 (以下が切っ掛けとなりこのフックメソッドが呼び出される)
この項目へのデータのインプットが完結したとき。
詳しくいうと、次のいずれかのときである。
再計算 (Recalc) モードにおいては、呼び出されることがない。
◇ 戻り値の意味とデフォルト動作 (戻り値による ItemBase への伝言)
ItemBase.CHECK_OK (= 0): 項目の単項目チェックが OK である。
n (1 以上の整数) または ItemBase.CHECK_NG (= 1): エラーコード n のエラーの検出がなされた。なお、RelCheck 系フックメソッドのエラーと区別するために、Check 系フックメソッドで検出したエラーは、10000 より小さい値にすることをお勧めする。
(このエラーコード n は、Response フックメソッドおよび ErrorMsg フックメソッドの Cd_Error パラメタの値になる)
デフォルト動作: CheckC 項目フックメソッドが組み込まれていない場合の動作は、ItemBase.CHECK_OK が設定された場合と同様である。
◇ 代行メッセージ (処理の流れに応じて発せられるメッセージ; カスタマイズ可能)
メッセージコード: "PRECHECK1"
"この項目にはインプットが必要です。"
メッセージコード: "PRECHECK2"
"この項目には左端から右端まで文字をインプットしてください。"
メッセージコード: "RECALC"
"ヘッド部またはテール部の項目を変更したため、 ボディ部または拡張ボディ部の項目に エラー個数 個のエラーが検出されました。"
"カーソルをエラーの項目に移動して修正してください。"
◇ 使用上のヒントと注意事項
単項目チェックを行う際にセントラル側の特定の資源 (データベースの参照など) が必要な場合には、この項目フックメソッドを用いるのがよい。セントラル側およびローカル側の特定の資源を必要としない場合には (あるいは双方に同じ資源がある場合には)、項目フックメソッド CheckCLC を用いるのがよい。
CheckC フックメソッドの中で、チェック対象の項目 (すなわちこの項目) の値を強制的に変更したい場合には、この項目を ByRef 指定のパラメタとして、このフックメソッドの中で変更することができる。あるいは、ItemBase の setValue メソッドで変更することもできる。
CheckC フックメソッドの中で、チェック対象の項目 (すなわちこの項目) の値を強制的に変更したい場合には、 ItemBase の setValue メソッドで変更することができる。
このフックメソッドのパラメタとして、この項目の縦の合計値 (Su_項目略称) を指定しないことをお勧めする。なぜなら、合計値にはこの項目の最新の値が反映されていない。
◇ 関連事項
単項目チェックではなく、複数の項目の関係をチェックする項目群フックメソッドに RelCheck および RelCheckLC がある。
このフックメソッドの戻り値が 0 の場合 (またはこの項目フックメソッドが組み込まれていない場合)、まず関連をもつ項目フックメソッド Derived または DerivedLC が呼び出され、さらにその後に関係をもつ項目群フックメソッド RelCheck または RelCheckLC が呼び出される。 そして、ステータス表示域がクリアされる。
このフックメソッドの戻り値が 1 以上の場合、その値は画面フックメソッド ErrorMsg に伝えられる。
このフックメソッドの後には、戻り値にかかわらず、ローカル側で項目フックメソッド Response が呼び出される。
◇ 使用例
' 発注元コードが入力された場合に、そのチェックを行う。 Friend Function CheckC(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 ' CheckC
// 発注元コードが入力された場合に、そのチェックを行う。 internal int CheckC( FormBase fB, string 発注元コード ) { if (発注元コード == string.Empty) { return 200; // エラーコード 200 } else { int 戻り値 = ((受注業務)fB.myFormHook).発注元レコード.SelectEqual(発注元コード); if (戻り値 == 0) { // コード項目が見つかった。 return ItemBase.CHECK_OK; // 正常終了。 } else { return 200; // エラーコード 200 } } } // CheckC
// 発注元コードが入力された場合に、そのチェックを行う。 int CheckC( FormBase fB, String 発注元コード ) { if (発注元コード.length() == 0) { return 200; // エラーコード 200 } else { int 戻り値 = ((受注業務) fB.myFormHook).発注元レコード.SelectEqual(発注元コード); if (戻り値 == 0) { // コード項目が見つかった。 return ItemBase.CHECK_OK; // 正常終了。 } else { return 200; // エラーコード 200 } } } // CheckC