Ошибка 3021 при выполнении запроса VBA к связанной таблице в Access - PullRequest
0 голосов
/ 08 июля 2019

Я хочу отправить запрос (запрос) из Excel в базу данных Access. Но когда мой запрос нацелен на связанную таблицу, он вызывает ошибку 3021. Однако когда я запускаю тот же самый запрос в Access, сам редактор запросов (dynaset) показывает 1300 строк.

Я тестировал различные решения:

  1. Я попытался выполнить восстановление с помощью

    conObj.execute (SqlString)

  2. Затем со следующим, с той же ошибкой

    RecordSet.Open SQL, "DsnODBC"

  3. Наконец с

    RecSet.Open SQL, conn, adOpenForwardOnly, adLockReadOnly, adCmdText

Но ничего не работает; каждый раз, когда я получаю сообщение об ошибке

LesResult = RecSet.GetRows()

'=========Instansiation des objets=========' 'init object
Set RecSet = New ADODB.recordset
Set conn = New ADODB.Connection
'=========================================='

'===========Connection à la base===========' 'DB connect
conn.ConnectionString = ThisWorkbook.leControler.strConnectString
conn.Open ThisWorkbook.leControler.strConnectString
'=========================================='


Select Case HerbierAdmin.ActiveAction

    Case "PM":
        [Somme code]

        SQL = "SELECT SAP_ClassItems.[Plan de montage] "
        SQL = SQL & "FROM SAP_ClassItems "
        SQL = SQL & "WHERE ((SAP_ClassItems.[Plan de montage] Like 'PM 21S *'));"
        Debug.Print SQL
        Set RecSet = conn.Execute("SELECT SAP_ClassItems.[Plan de montage] FROM SAP_ClassItems WHERE ((SAP_ClassItems.[Plan de montage] Like 'PM 21S *'));")

        LesResult = RecSet.GetRows() 'error here
        RecSet.Close

        For i = 0 To UBound(LesResult, 2)
           Me.ListeBox.AddItem (LesResult(0, i)) 'add result to drop down box
        Next

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

Ответы [ 2 ]

0 голосов
/ 11 июля 2019

Хорошо, так что спасибо Harassed Dad.Решением является размещение «%» вместо «*» в аналогичной инструкции.

0 голосов
/ 08 июля 2019

пропустить переменную:

Set RecSet = conn.Execute("SELECT SAP_ClassItems.[Plan de montage] FROM SAP_ClassItems WHERE ((SAP_ClassItems.[Plan de montage] Like 'PM 21S *'));")

    Do until recsec.eof
       Me.ListeBox.AddItem recsec(0) 'add result to drop down box
       recsec.movenext
    loop 
    recsec.close
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...