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