gpt4 book ai didi

excel - Access 数据库中的 vba 上传中的语法错误

转载 作者:行者123 更新时间:2023-12-04 22:23:45 24 4
gpt4 key购买 nike

我正在尝试通过 vba 从 Excel 文件更新 Access 数据库中的几个字段。字段格式相同。但是,我面临以下文本的错误消息:

运行时错误(FROM 子句中的语法错误)

以下是我的代码:


Dim Wb As Workbook
Dim Ws1, Ws2 As Worksheet
Dim CN As ADODB.Connection
Dim Rst As ADODB.Recordset
Dim i As Long
Dim mySQLst As String
Dim IDd As Long
Dim dbPath
Set Wb = ThisWorkbook
Set Ws1 = Wb.Sheets("Sheet1")


dbPath = Ws1.Range("V1").Value
Set CN = New ADODB.Connection
CN.Open "Provider=microsoft.ace.oledb.12.0;data source=" & dbPath

Set Rst = New ADODB.Recordset

For i = 2 To Ws1.Range("A" & Rows.Count).End(xlUp).Row

IDd = Ws1.Cells(i, 1).Value
mySQLst = "SELECT * FROM Test_Table1 WHERE (((Test_Table1.ID1)=16));"

Rst.Open mySQLst, CN, adOpenDynamic, adLockOptimistic, Options:=adCmdTable

While Not Rst.EOF
Rst!TASK_STATUS = Ws1.Cells(i, 13).Value
Rst!TASK_COMPLETED_DATE = Ws1.Cells(i, 14).Value
Rst!RESPONSE = Ws1.Cells(i, 15).Value
Rst.MoveNext
Wend
Next i

Rst.Close
Set Rst = Nothing
CN.Close
Set CN = Nothing

End Sub

我的 activeX 库 2.5 从引用中激活。

谢谢

最佳答案

您的代码存在许多问题:
一旦你修复了这个错误,你会看到更多。

  • 要修复您询问的错误,请尝试在记录集中使用命名字段:
    例如:

    “SELECT TASK_STATUS, TASK_COMPLETED_DATE, RESPONSE FROM Test_Table1 WHERE Test_Table1.ID1=16;”
  • 如果电子表格中有包含 ID1 值的列,则每次循环时都需要用该单元格替换 select 语句中的“16”。
  • 删除 rst.movenext - 您只想更新一条记录。
  • 将 While Not Rst.EOF 更改为 IF Not Rst.EOF(如果有记录则更新,而不是循环)

  • 在这些更改之后,事情会变得更好。

    关于excel - Access 数据库中的 vba 上传中的语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60006209/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com