Как получить возврат из запроса на соединение, если вместо ошибки отсутствует одна из таблиц - PullRequest
0 голосов
/ 21 сентября 2019

У меня есть запрос на соединение из 3 таблиц, одна из которых связана с другой базой данных и сетевым местоположением.Иногда это местоположение недоступно и связанная таблица отсутствует.Это приводит к ошибке запроса отсутствующей таблицы.

Можно ли заставить запрос работать с и без связанной таблицы?Если данные отсутствуют, данные столбца должны быть нулевыми.

Ответы [ 2 ]

1 голос
/ 21 сентября 2019

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

' ValidLinkedTableP  -  Lee Mac
' Predicate function returning True if a linked table exists and may be refreshed
Function ValidLinkedTableP(strTbl As String) As Boolean
    On Error GoTo error_handler
    Dim dbs As DAO.Database
    Dim tdf As DAO.TableDef

    Set dbs = CurrentDb
    Set tdf = dbs.TableDefs(strTbl)
    If tdf.Connect <> vbNullString Then
        tdf.RefreshLink
        ValidLinkedTableP = True
    End If

exit_function:
    Set tdf = Nothing
    Set dbs = Nothing
    Exit Function

error_handler:
    Select Case Err.Number
        Case 3024 ' Link broken
        Case 3265 ' Table doesn't exist
        Case Else
            MsgBox "Error " & Err.Number & vbCrLf & vbCrLf & Err.Description
    End Select
    Resume exit_function
End Function

Выше будет возвращено True, если связанная таблица существует в текущейбаза данных с непрерывной ссылкой на исходную таблицу.

Таким образом, вы можете оценить вышеизложенное перед открытием формы и установить для свойства «Источник записи» формы соответствующий запрос, зависящий от значения, возвращаемого вышеуказанной функцией..

0 голосов
/ 21 сентября 2019

Нет.

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

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

...