当我在 Access 中 运行 VBA 请求链接 table 时出现错误 3021

Error 3021 when I run VBA request to a linked table in Access

我想从 Excel 向 Access 数据库发送请求(查询)。但是当我的请求以链接 table 为目标时,它会触发 3021 错误。但是,当我在 Access 中 运行 相同的请求时,请求编辑器 (dynaset) 本身显示 1300 行。

我测试了各种解决方案:

  1. 我尝试用

    执行请求

    conObj.execute(SQL字符串)

  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

预期结果:查询结果可以添加到下拉列表中。

跳过变量:

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

好的,感谢骚扰爸爸。解决方案是在 like 指令中放置 '%' 而不是 '*'。