Microsoft Access VBA: объединить текстовые значения с помощью выражения - PullRequest
0 голосов
/ 02 мая 2018

Привет! Я создал форму входа для тренеров и участников, они могут войти в одну форму. Тем не менее, я хотел бы убедиться, что когда тренер или участник войдет в систему, появится окно с сообщением. "Welcome = [FirstName] &" "& [LastName]". Таким образом, после приветствия отображается полное имя участника или тренера.

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

Option Compare Database

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 & = [TrainerFirstName] & " " & [TrainerLastName] or = [MemberFirstName] & " " & [MemberLastName] ")
        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

Ответы [ 2 ]

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

Похоже, вы пропустили полное имя. Для этого используйте DLookup :

Private Sub Command9_Click()

    Dim Trainer As Variant
    Dim Member As Variant

    Trainer = DLookup("[TrainerFirstName] & ' ' & [TrainerLastName]", "tbl4_Trainers", _
                 "TrainerEmail = '" & [txtEmail] & "' And TrainerPassword = '" &[txtPassword] & "'")
    Member = DLookup("[MemberFirstName] & ' ' & [MemberLastName]", "tbl1_Members", _
                 "MemberEmail = '" & [txtEmail] & "' And MemberPassword = '" &[txtPassword] & "'")

    ' To debug:
    MsgBox "Trainer: '" & Trainer & "'" & vbCrLf & "Member: '" & Member & "'"
    ' Note the revised logic: + -> &
    If Not IsNull(Trainer & Member) Then
        MsgBox "Welcome " & Nz(Trainer, Member)
        DoCmd.Close acForm, "frm1_Member & Trainer Login"

        If Not IsNull(Trainer) Then
            DoCmd.OpenForm "frm3_Main Menu"
        Else
            DoCmd.OpenForm "frm2_Member Class Registration"
        End If
    Else
        MsgBox "Login Failed"
    End If

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

Объединение переменных. Если поля имеют текстовый тип, параметры должны содержать разделители апострофов.

isTrainer = DCount("TrainerFirstName", "tbl4_Trainers", _
             "TrainerEmail = '" & Me.txtEmail & "' And TrainerPassword = '" & Me.txtPassword & "'") > 0
isMember = DCount("MemberFirstName", "tbl1_Members", _
             "MemberEmail = '" & Me.txtEmail & "' And MemberPassword = '" & Me.txtPassword & "'") > 0

Нужно условно построить приветственный текст MsgBox. Не используйте функцию MsgBox, просто MsgBox OkOnly.

MsgBox "Welcome " & IIf(isTrainer, [TrainerFirstName] & " " & [TrainerLastName], [MemberFirstName] & " " & [MemberLastName])

MsgBox "Login Failed"

Не рекомендуется использовать пробелы, знаки препинания / специальные символы (только подчеркивание) в соглашении об именах. Лучше имена форм будут:
frm1_MemberTrainerLogin
frm2_MemberClassRegistration
frm3_MainMenu

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...