Вызов функции VBA в запросе доступа

Я пытаюсь объединить результаты 8 различных запросов обратно в один запрос. Все используемые запросы являются запросами запросов запросов. 8 серий из 4 запросов разделили игроков на части в зависимости от того, сколько раундов в гольф они сыграли. Последний запрос в каждой серии вычисляет точный гандикап каждого игрока.

То, что я пытаюсь сделать, может быть невозможно с кодом, который я использую.

Функциональный код выглядит следующим образом:

Function EHC(PlayerID As Long) As Long

    Dim queT20 As Recordset
    Dim que3to6 As Recordset
    Dim que7or8 As Recordset
    Dim que9or10 As Recordset
    Dim que11or12 As Recordset
    Dim que13or14 As Recordset
    Dim que15or16 As Recordset
    Dim que17or18 As Recordset
    Dim que19or20 As Recordset

    Set queT20 = CurrentDb.OpenRecordset("Top20Count")
    queT20.FindFirst ("PlayerID =" & PlayerID)
    If queT20![PlayerID] >= 19 Then
        Set que19or20 = CurrentDb.OpenRecordset("P_19or20ExactHC")
        que19or20.FindFirst ("PlayerID =" & PlayerID)
        ExactHC = que19or20.Exact_HC
        que19or20.Close
        Set que19or20 = Nothing
    ElseIf queT20![PlayerID] >= 17 Then
        Set que17or18 = CurrentDb.OpenRecordset("P_17or18ExactHC")
        que17or18.FindFirst ("PlayerID =" & PlayerID)
        ExactHC = que17or18.Exact_HC
        que17or18.Close
        Set que17or18 = Nothing
    ElseIf queT20![PlayerID] >= 17 Then
        Set que15or16 = CurrentDb.OpenRecordset("P_15or16ExactHC")
        que15or16.FindFirst ("PlayerID =" & PlayerID)
        ExactHC = que15or16.Exact_HC
        que15or16.Close
        Set que15or16 = Nothing
    ElseIf queT20![PlayerID] >= 17 Then
        Set que13or14 = CurrentDb.OpenRecordset("P_13or14ExactHC")
        que13or14.FindFirst ("PlayerID =" & PlayerID)
        ExactHC = que13or14.Exact_HC
        que13or14.Close
        Set que13or14 = Nothing
    ElseIf queT20![PlayerID] >= 17 Then
        Set que11or12 = CurrentDb.OpenRecordset("P_11or12ExactHC")
        que11or12.FindFirst ("PlayerID =" & PlayerID)
        ExactHC = que11or12.Exact_HC
        que11or12.Close
        Set que11or12 = Nothing
    ElseIf queT20![PlayerID] >= 17 Then
        Set que9or10 = CurrentDb.OpenRecordset("P_9or10ExactHC")
        que9or10.FindFirst ("PlayerID =" & PlayerID)
        ExactHC = que9or10.Exact_HC
        que9or10.Close
        Set que9or10 = Nothing
    ElseIf queT20![PlayerID] >= 17 Then
        Set que7or8 = CurrentDb.OpenRecordset("P_7or8ExactHC")
        que7or8.FindFirst ("PlayerID =" & PlayerID)
        ExactHC = que7or8.Exact_HC
        que7or8.Close
        Set que7or8 = Nothing
    ElseIf queT20![PlayerID] >= 17 Then
        Set que3to6 = CurrentDb.OpenRecordset("P_3to6ExactHC")
        que3to6.FindFirst ("PlayerID =" & PlayerID)
        ExactHC = que3to6.Exact_HC
        que3to6.Close
        Set que3to6 = Nothing
    Else: ExactHC = 0
    End If
    queT20.Close
    Set queT20 = Nothing
End Function

и оператор SQL-запроса:

SELECT PlayerInfo.PlayerID, PlayerInfo.Display, EHC([PlayerInfo]![PlayerID]) AS ExactHandicap
FROM ((((((((PlayerInfo INNER JOIN Top20Count ON PlayerInfo.PlayerID = Top20Count.PlayerID) 
    INNER JOIN P_3to6ExactHC ON PlayerInfo.PlayerID = P_3to6ExactHC.PlayerID) 
    INNER JOIN P_7or8ExactHC ON PlayerInfo.PlayerID = P_7or8ExactHC.PlayerID) 
    INNER JOIN P_9or10ExactHC ON PlayerInfo.PlayerID = P_9or10ExactHC.PlayerID) 
    INNER JOIN P_11or12ExactHC ON PlayerInfo.PlayerID = P_11or12ExactHC.PlayerID) 
    INNER JOIN P_13or14ExactHC ON PlayerInfo.PlayerID = P_13or14ExactHC.PlayerID) 
    INNER JOIN P_15or16ExactHC ON PlayerInfo.PlayerID = P_15or16ExactHC.PlayerID) 
    INNER JOIN P_17or18ExactHC ON PlayerInfo.PlayerID = P_17or18ExactHC.PlayerID) 
    INNER JOIN P_19or20ExactHC ON PlayerInfo.PlayerID = P_19or20ExactHC.PlayerID
WHERE (((PlayerInfo.Display)=True));

Когда я пытаюсь запустить это, я получаю сообщение об ошибке.Undefined function 'EHC' in expression

Я также пробовал тот же запрос с оператором IIF или SWITCH вместо вызова функции.

Я грубо основываю идею вызова функции из статьи вРейтинг MS Access 2010, сравнивающий два столбца для уникальных рангов.

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

Ответы на вопрос(1)

Ваш ответ на вопрос