Как проверить, существует ли поле в таблице доступа с помощью Excel VBA? - PullRequest
0 голосов
/ 23 октября 2018

Я хочу проверить, существует ли поле в таблице доступа.Я получаю сообщение «Найдено», даже если поле не существует.

Sub test()
    With Acon
        .Provider = "Microsoft.ACE.OLEDB.12.0"
        .ConnectionString = "Data Source=" + myFileNameDir
        .Properties("Jet OLEDB:Database Password") = "synpass"
        .Open
    End With

    With rs
        .CursorLocation = adUseClient
        .CursorType = adOpenDynamic
        .LockType = adLockOptimistic
        .ActiveConnection = Acon
        .Source = "Select Distinct [Term - Phases] from Sheet1"
        .Open
    End With

    On Error Resume Next

    If rs.Fields("Start_Date") Then
        MsgBox "Found"

    Else: MsgBox "not fund"

    End If
    On Error GoTo 0

    rs.Close Acon.Close
End Sub

1 Ответ

0 голосов
/ 23 октября 2018

Отказ от ответственности Я не привык работать с полями из Microsoft.ACE.OLEDB, а следующий код не проверен

Вместо использования:

On Error Resume Next

If rs.Fields("Start_Date") Then
    MsgBox "Found"

Else: MsgBox "not fund"

End If
On Error GoTo 0

Попробуйте вместо этого присвоить поле переменной, а затем протестируйте:

Dim testField as Variant
On Error Resume Next
Set testField = rs.Fields("Start_Date")
On Error GoTo 0

If testField is Nothing Then 'Or is Empty
    MsgBox "Found"

Else: MsgBox "not fund"

End If

Когда On Error Resume Next используется вокруг If операторов, и условие вызывает ошибку, тогдаКод предполагает, что условие выполнено и не выполняется.

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