Microsoft Access VBA: MsgBox появляется дважды. Есть идеи почему? - PullRequest
0 голосов
/ 02 мая 2018

Я разрабатываю одну форму входа для использования тренерами и участниками. Если участник входит в систему, он перенаправляется в форму «Регистрация класса frm2_Member», а если тренер входит в систему, он перенаправляется в форму «Меню frm3_Main». Однако при нажатии кнопки входа в систему (Command9_Click) в форме ошибки отображаются правильно, но они отображаются дважды. После того, как тренер войдет в окно сообщения, появится сообщение «Войти успешно». Затем сразу появляется другое сообщение с сообщением «Ошибка входа», однако все данные отображаются правильно, просто они отображаются неправильно.

Может кто-нибудь, пожалуйста, помогите мне, был бы очень признателен, спасибо. Код VBA ниже.

Private Sub Command9_Click()

If (DCount("MemberFirstName", "tbl1_Members", "MemberEmail = [txtEmail] And MemberPassword = [txtPassword] ")) > 0 Then
    MsgBox ("Welcome")
    DoCmd.Close acForm, "frm1_Member & Trainer Login"
    DoCmd.OpenForm "frm2_Member Class Registration"
Else
    MsgBox ("Login Failed")
    End If

If (DCount("TrainerFirstName", "tbl4_Trainers", "TrainerEmail = [txtEmail] And TrainerPassword = [txtPassword] ")) > 0 Then
    MsgBox ("Welcome")
    DoCmd.Close acForm, "frm1_Member & Trainer Login"
    DoCmd.OpenForm "frm3_Main Menu"
Else
    MsgBox ("Login Failed")

    End If
End Sub

Ответы [ 2 ]

0 голосов
/ 02 мая 2018

Ваш код продолжает работать после 1-го конца If. Было бы лучше объединить эти два отдельных оператора If, используя ElseIf, тем самым генерируя сообщение с ошибкой, только если оба оператора If не соответствуют действительности.

Private Sub Command9_Click()

If (DCount("MemberFirstName", "tbl1_Members", "MemberEmail = [txtEmail] And MemberPassword = [txtPassword] ")) > 0 Then
    MsgBox ("Welcome")
    DoCmd.Close acForm, "frm1_Member & Trainer Login"
    DoCmd.OpenForm "frm2_Member Class Registration"
ElseIf (DCount("TrainerFirstName", "tbl4_Trainers", "TrainerEmail = [txtEmail] And TrainerPassword = [txtPassword] ")) > 0 Then
    MsgBox ("Welcome")
    DoCmd.Close acForm, "frm1_Member & Trainer Login"
    DoCmd.OpenForm "frm3_Main Menu"
Else
    MsgBox ("Login Failed")
End If

End Sub
0 голосов
/ 02 мая 2018
Private Sub Command9_Click()

    Dim isTrainer As Boolean, isMember As Boolean

    isTrainer = DCount("TrainerFirstName", "tbl4_Trainers", _
                 "TrainerEmail = [txtEmail] And TrainerPassword = [txtPassword] ") > 0
    isMember = DCount("MemberFirstName", "tbl1_Members", _
                 "MemberEmail = [txtEmail] And MemberPassword = [txtPassword] ") > 0

    If isTrainer Or isMember Then
        MsgBox ("Welcome")
        DoCmd.Close acForm, "frm1_Member & Trainer Login"
        If isTrainer Then
            DoCmd.OpenForm "frm3_Main Menu"
        Else
            DoCmd.OpenForm "frm2_Member Class Registration"
        End If

    Else
        MsgBox ("Login Failed")
    End If

End Sub
...