Ваша проблема в этом выражении:
If (IsNull(DLookup("MemberEmail", "TBL_Members", "MemberEmail = '" & _
Me.txtEmail.Value & "' And MemberPassword = '" & Me.txtPassword.Value & "'")) _
Or (DLookup("TrainerEmail", "TBL_Trainers", "TrainerEmail = '" & _
Me.txtEmail.Value & "' And TrainerPassword = '" & Me.txtPassword.Value & "'"))) _
Then
Давайте добавим некоторые переменные, чтобы было легче читать:
Dim varM As Variant
Dim varT As Variant
varM = DLookup("MemberEmail", "TBL_Members", "MemberEmail = '" & _
Me.txtEmail.Value & "' And MemberPassword = '" & Me.txtPassword.Value & "'"))
varT = DLookup("TrainerEmail", "TBL_Trainers", "TrainerEmail = '" & _
Me.txtEmail.Value & "' And TrainerPassword = '" & Me.txtPassword.Value & "'"))
If (IsNull(varM Or varT)) Then
Проблема в том, что Or
требует логического или числовогооперанды, но вы применяете его к адресам электронной почты и затем проверяете, является ли результат нулевым.Что вы действительно хотите сделать, это проверить, является ли каждое из них нулевым, и затем использовать результаты этих выражений в качестве операндов для Or
:
If (IsNull(varM) Or IsNull(varT)) Then
Кроме того, как указано в комментарии, оператор должен бытьAnd
, а не Or
, поскольку вы никогда не ожидаете, что оба значения будут ненулевыми:
If (IsNull(varM) And IsNull(varT)) Then
Я оставлю это вам, чтобы выяснить, как исправить это в оригиналевыражение без переменных.