MS Access if заявление о клике - PullRequest
0 голосов
/ 19 ноября 2018

Я использую формы MS Access, и я создал событие по щелчку, которое определяет местоположение папки, но теперь я хочу определить местоположение папки на основе других критериев, но когда я добавляю оператор if, он ожидает дочернюю функцию, функцию или свойство , Ниже приведен демонстрационный код. Я действительно надеюсь, что кто-то может объяснить, чего не хватает?

    Private Sub Open_Email_Click()
    Dim stAppName As String
    Dim stAppNameA As String
    Dim stAppNameB As String
    stAppName  = "C:\Windows\explorer.exe C:\DEMO\TEST\" & Me.Office & " DEMO\B " & Me.BC & " " & Me.UC & "\"
    stAppNameA = "C:\Windows\explorer.exe C:\DEMO\TEST\" & Me.Office & " DEMO\A\B " & Me.BC & " " & Me.UC & "\"
    stAppNameB = "C:\Windows\explorer.exe C:\DEMO\TEST\" & Me.Office & " DEMO\B\B " & Me.BC & " " & Me.UC & "\"

    If (Me.BC = "60") And Me.UC Like "REF123*" Then stAppNameA
    ElseIf (Me.BC = "60") And Not Me.UC Like "REF123*" Then stAppNameB
    Else: stAppName
    End If

Call Shell(stAppName, 1) 
End Sub

Ответы [ 2 ]

0 голосов
/ 19 ноября 2018

Я думаю, что логика вашей функции может быть сведена к следующему, что может быть более читабельным при меньшем количестве повторяющихся выражений:

Private Sub Open_Email_Click()
    Dim strTmp As String

    If Me.BC = "60" Then
        If Me.UC Like "REF123*" Then
            strTmp = " DEMO\A\B "
        Else
            strTmp = " DEMO\B\B "
        End If
    Else
        strTmp = " DEMO\B "
    End If
    Call Shell("C:\Windows\explorer.exe C:\DEMO\TEST\" & Me.Office & strTmp & Me.BC & " " & Me.UC & "\", 1)
End Sub

В качестве альтернативы, используя оператор Select Case:

Private Sub Open_Email_Click()
    Dim strTmp As String

    Select Case True
        Case Me.BC <> "60"
            strTmp = " DEMO\B "
        Case Me.UC Like "REF123*"
            strTmp = " DEMO\A\B "
        Case Else
            strTmp = " DEMO\B\B "
    End Select
    Call Shell("C:\Windows\explorer.exe C:\DEMO\TEST\" & Me.Office & strTmp & Me.BC & " " & Me.UC & "\", 1)
End Sub

Чтобы проверить полученный путь, измените:

Call Shell("C:\Windows\explorer.exe C:\DEMO\TEST\" & Me.Office & strTmp & Me.BC & " " & Me.UC & "\", 1)

На:

Debug.Print "C:\Windows\explorer.exe C:\DEMO\TEST\" & Me.Office & strTmp & Me.BC & " " & Me.UC & "\"
0 голосов
/ 19 ноября 2018

Я думаю, что ваш блок If немного запутан с точки зрения того, где у вас есть новые строки и символы продолжения (:). Попробуйте переформатировать ваш код следующим образом:

    If (Me.BC = "60") And Me.UC Like "REF123*" Then 
        stAppName =stAppNameA
    ElseIf (Me.BC = "60") And Not Me.UC Like "REF123*" Then 
        stAppName = stAppNameB
    Else 
        stAppName =stAppName
    End If

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