Проблема с проверкой пустых полей ввода и отправкой соответствующего сообщения в VBA - PullRequest
0 голосов
/ 29 апреля 2020

У меня проблема с моим кодом в VBA, должным образом проверяющим пустые поля и выдающим соответствующее сообщение в этом событии, и я не могу понять, что я сделал неправильно. Моя проблема в том, что на самом деле работает только проверка пустых полей имени клиента, остальные вообще ничего не делают. Вот пример моего кода.

'Error Handling
If (Me!ClientName) = "" Then
    MsgBox "Client Name cannot be blank"
    End

Else
    If IsNumeric(ClientName.Value) = True Then
        MsgBox "Client Name must be letters only."
        End
        Exit Sub
    End If
End If

If (Me!ClientDoB) = "" Then
    MsgBox "Client Date of Birth cannot be blank"
    End
End If

If (Me!ClientAdd) = "" Then
    MsgBox "Client Address cannot be blank"
    End
End If

If (Me!ClientCity) = "" Then
    MsgBox "Client City cannot be blank"
    End
Else
    If IsNumeric(ClientCity.Value) = True Then
        MsgBox "Client City must be letters only."
        End
        Exit Sub
    End If
End If

If (Me!ClientSt) = "" Then
    MsgBox "Client State cannot be blank"
    End
End If

If (Me!ClientZC) = "" Then
    MsgBox "Client Zip Code cannot be blank"
    End
Else
    If IsNumeric(ClientZC.Value) = False Then
        MsgBox "Client Zip Code must be numbers only."
        End
        Exit Sub
    End If
End If

Ответы [ 2 ]

3 голосов
/ 30 апреля 2020

Рассмотрите возможность использования структуры if-elseif, например:

If Me.clientname & "" = "" Then
    MsgBox "Client Name cannot be blank"
ElseIf Me.clientname Like "*[!A-Za-z]*" Then
    MsgBox "Client Name must contain letters only."
ElseIf Me.clientdob & "" = "" Then
    MsgBox "Client Date of Birth cannot be blank"
ElseIf Me.clientadd & "" = "" Then
    MsgBox "Client Address cannot be blank"
ElseIf Me.clientcity & "" = "" Then
    MsgBox "Client City cannot be blank"
ElseIf Me.clientcity Like "*[!A-Za-z]*" Then
    MsgBox "Client City must contain letters only."
ElseIf Me.clientst & "" = "" Then
    MsgBox "Client State cannot be blank"
ElseIf Me.clientzc & "" = "" Then
    MsgBox "Client Zip Code cannot be blank"
ElseIf Me.clientzc Like "*[!0-9]*" Then
    MsgBox "Client Zip Code must be numbers only."
End If
0 голосов
/ 30 апреля 2020

Это потому, что в MS Access пустое поле не обязательно равно NULL. Чтобы обойти это, используйте функцию NZ. Это очень полезно в таких ситуациях, как ваша, в которых поле может быть пустым или пустым (MS Access различает два!).

If (Nz(Me!ClientAdd,"")) = "" Then
    MsgBox "Client Address cannot be blank"
    End
End If

Это обнаружит пустые И пустые значения и предоставит вам ожидаемый результат как вы описываете. Пост решения «Если тогда остальное» выше не рекомендуется в вашем сценарии. Потому что, как только он найдет «истинный» сценарий, все остальные сценарии ios будут проигнорированы ... Код, который вы опубликовали, является правильным кодом (и методом) для использования. Просто оберните поля с помощью функции Nz (! Yourfield, Value if Null).

Надеюсь, это поможет.

...