Microsoft Access 掲示板

VBAでSQL更新 / 9

16 コメント
views
4 フォロー
9
'各コントロールの入力状態をチェックする関数。
'全てのコントロールの値が適切であれば True、そうでなければ False を返す
Private Function InputCheck() As Boolean
On Error GoTo Err_InputCheck

    InputCheck = False

    '[txtID]のチェック(オートナンバー型の主キー[ID]と照応)
    With Me![txtID]
        
        If IsNull(.Value) = True Then
            MsgBox "[ID]が入力されていません。", _
                   vbExclamation, _
                   "入力エラー"
            .SetFocus
            Exit Function
        End If
        
        If IsNumeric(.Value) = False Then
            MsgBox "数値データに変換できない文字列が[ID]に入力されています。", _
                   vbExclamation, _
                   "入力エラー"
            .SetFocus
            Exit Function
        End If

        If DCount("*", SourceTableName, "[ID]=" & CLng(.Value)) = 0 Then
            MsgBox "テーブル[" & SourceTableName & "]上に、[ID]の値が" & CLng(.Value) & "であるレコードは存在しません。", _
                   vbExclamation, _
                   "入力エラー"
            .SetFocus
            Exit Function
        End If

    End With

    '[c1]のチェック(数値型フィールド[F1]と照応)
    With Me![c1]
        
        If Nz(.Value, "") <> "" Then
            If IsNumeric(.Value) = False Then
                MsgBox "数値データに変換できない文字列が[F1]に入力されています。", _
                       vbExclamation, _
                       "入力エラー"
                .SetFocus
                Exit Function
            End If
        End If

    End With

    '[c2]のチェック(通貨型フィールド[F2]と照応)
    With Me![c2]
        
        If Nz(.Value, "") <> "" Then
            If IsNumeric(.Value) = False Then
                MsgBox "数値データに変換できない文字列が[F2]に入力されています。", _
                       vbExclamation, _
                       "入力エラー"
                .SetFocus
                Exit Function
            End If
        End If

    End With

    '[c3]のチェック(日付/時刻型フィールド[F3]と照応)
    With Me![c3]
        
        If Nz(.Value, "") <> "" Then
            If IsDate(.Value) = False Then
                MsgBox "日時データに変換できない値が[F3]に入力されています。", _
                       vbExclamation, _
                       "入力エラー"
                .SetFocus
                Exit Function
            End If
        End If

    End With

    InputCheck = True

'終了処理
Exit_InputCheck:

    Exit Function

'エラー時処理
Err_InputCheck:

    InputCheck = False

    Dim strErrTitle As String
    Dim strErrMsg As String

    strErrTitle = "実行時エラー (" & Me.Name & ".InputCheck)"
    strErrMsg = Err.Number & ": " & Err.Description

    Debug.Print strErrTitle
    Debug.Print strErrMsg

    MsgBox strErrMsg, vbCritical, strErrTitle

End Function
通報 ...