Microsoft Access VBA: объединение текстовых значений с помощью выражения

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

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

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
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
115
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

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

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

Похоже, вы пропустили полное имя. Для этого используйте 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

спасибо за помощь, но я продолжаю получать сообщение "Ошибка входа". Не могли бы вы помочь мне решить эту проблему, спасибо.

user9727816 02.05.2018 14:01

Да. Моя логика была неправильной - вход в систему не удался, если тренер или участник не были найдены. См. Комментарии в отредактированном ответе, пожалуйста.

Gustav 02.05.2018 14:30

Я не могу отблагодарить вас достаточно, вы действительно мне очень помогли, и еще раз спасибо за вашу помощь, надеюсь, вам удастся сделать все в будущем.

user9727816 02.05.2018 14:47

Другие вопросы по теме