sql - 我试图在 ADO Excel 中使用的这个 UPDATE 语句有什么问题?

标签 sql excel vba adodb

我正在尝试使用 ADO 更新工作表的内容。

我构造的 SQL 语句是:

update [Regional Personnel$] set name='Ada Lovelace',
phone='(303) 555-1337',
[lan id]='ADL3',position='Engineer' where id=3
Regional Personnel工作表具有此列结构:
+----+---------------------+------------------------+--------+----------------+
| ID |        Name         |        Position        | Lan Id |     Phone      |
+----+---------------------+------------------------+--------+----------------+
|  2 | Kimberly St.-Simone | Senior Engineer        | KMS1   | (808) 555-0210 |
|  3 | Daphne Christianson | Database Administrator | DAC5   | (909) 555-3524 |
+----+---------------------+------------------------+--------+----------------+

但是当我有一个 ADO 连接并尝试使用以下命令执行此更新语句时:
Sub update(sql as string)

dim objconnection As New ADODB.Connection

objconnection.CommandTimeout = 99999999

objconnection.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & _
    "Data Source=" & ThisWorkbook.FullName & ";" & _
        "Extended Properties=""Excel 12.0 Xml;HDR=YES;IMEX=1"";"


objconnection.Execute sql

End Sub
objconnection.Execute sql行给出了这个错误:
Run-time error '-2147217900 (80040e14)':
Syntax error in UPDATE statement.

SQL 语句对我来说看起来不错,我错过了什么吗?

最佳答案

  • position 周围加上方括号(似乎是保留字)。
  • 删除 IMEX=1从连接字符串,或者你得到一个错误“操作
    必须使用可更新查询”

  • 修改后的代码:
    Sub Tester()
    
       update "update [Regional Personnel$] set name='Ada Lovelace'," & _
           " [Phone]='(303) 555-1337', [lan id]='ADL3', [position]='Engineer' where id=3"
    
    
    End Sub
    
    
    Sub update(sql As String)
    
        Dim objconnection As New ADODB.Connection
    
        objconnection.CommandTimeout = 99999999
    
        objconnection.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & _
            "Data Source=" & ThisWorkbook.FullName & ";" & _
            "Extended Properties=""Excel 12.0 Xml;HDR=YES;"";"
    
        objconnection.Execute sql
    
    End Sub
    

    关于sql - 我试图在 ADO Excel 中使用的这个 UPDATE 语句有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23227350/

    相关文章:

    python - 一次从临时表中获取n条记录

    excel - 将单元格与 A 列进行比较,如果 B 列匹配,则写 X

    excel - 如何在案例陈述中引用多张工作表

    excel - 在 VBA 中将变量范围从一个层复制到另一个层

    c++ - 如何有效地检查/限制 sqlite 数据库的大小?

    mysql - 将大型 sql 转储导入 Mysql

    sql - 查找 SQL Server 数据库中所有表中 nvarchar(max) 类型的所有列

    python - 使用 win32com 访问 Excel 文件的问题

    excel - 如何在 excel 中使用 2 个条件进行 Vlookup

    sql - 使用 ADODB Recordset 更新记录