Microsoft Access 掲示板

フォームの入力漏れ防止について

2 コメント
views
4 フォロー
Public Function 入力漏れ()
 Dim myCtrl As Control

 For Each myCtrl In Screen.ActiveForm.Controls
        If myCtrl.Name Like "txt*" Then
         If IsNull(myCtrl.Value) Then
            MsgBox "入力必須項目に入力漏れがあります"
            Cancel = True
            Exit Function
         End If
        End If
    Next

End Function
Private Sub コマンド100_Click()

 Dim myDB As DAO.Database
 Dim myRS As DAO.Recordset
 
  Module1.入力漏れ
  
    Set myDB = CurrentDb
    Set myRS = myDB.OpenRecordset("MT_申込", dbOpenTable)
  
        With myRS
            .AddNew
            !お申込日 = お申込日.Value
            !受注ID = txt受注ID.Value
            !ご契約区分 = txtご契約区分.Value
            !データ区分 = txtデータ区分.Value
            !クーポンCD = txtクーポンCD.Value
            .Update
            
            お申込日.Value = Null
            txt受注ID.Value = Null
            txtご契約区分.Value = Null
            txtデータ区分.Value = Null
            txtクーポンCD.Value = Null

            
            
        End With
        
        MsgBox "登録しました。"
    
    myRS.Close: Set myRS = Nothing
    myDB.Close: Set myDB = Nothing
End Sub

↑のようなコードで入力漏れを防止しようと思っています。

標準モジュールに、入力漏れのコードを記載して、
フォームから呼び出しています。

当然の現象ですが、入力漏れがあった場合、反応はしますが、結局、登録されてします。

Public Function 入力漏れを呼び出し、入力漏れがあった時点で、中断する方法はありますか?

  Module1.入力漏れ

↑この時に、条件判定をするのでしょうか?

お手数ですが、ご教示をお願いします

hideki
作成: 2021/07/29 (木) 10:15:48
通報 ...
1
hiroton 2021/07/29 (木) 10:45:11 85289@f966d

Function プロシージャは戻り値が取れるのでその結果で条件分岐すればいいでしょう

Public Function 入力漏れ() As Boolean
 Dim myCtrl As Control

 For Each myCtrl In Screen.ActiveForm.Controls
        If myCtrl.Name Like "txt*" Then
         If IsNull(myCtrl.Value) Then
            MsgBox "入力必須項目に入力漏れがあります"
'            Cancel = True
            入力漏れ = True
            Exit Function
         End If
        End If
    Next
  入力漏れ = False

End Function

プロシージャはExitステートメントで中断することができます

  If Module1.入力漏れ Then Exit Sub
2
hideki 2021/07/29 (木) 11:23:50 a106b@96514

ありがとうございました。
Fcuntionを勉強していますが、イマイチ理解できていません。
このように条件判定するんですね。
参考になりました。
ありがとうございました。