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

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

我构build的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 (似乎是一个保留字)。
  • 从连接string中删除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 

你应该括表的名称和“位置”以及。

 update [Regional Personnel$] set [Regional Personnel$].name='Ada Lovelace', [Regional Personnel$].phone='(303) 555-1337', [Regional Personnel$].[lan id]='ADL3', [Regional Personnel$].[position]='Engineer' where [Regional Personnel$].id=3