我正在尝试编写一个使用ADODB连接来更新已关闭工作簿中的记录(行)的过程。
我似乎无法弄清楚如何在Excel中引用多个表(工作表)和多个字段(列)...
我的SQL语句如下所示:
SQLstr = "UPDATE [Location$] " & vbNewLine & _
"SET [Location$].[City]=[Current Location$].[City] " & vbNewLine & _
"WHERE [Location$].[Name]=[Current Location$].[Name]"
cn.Execute SQLstr
此声明的目标是使用“当前位置”表单(在同一工作簿中)中的“城市”字段更新“位置”表单上的“城市”字段。
问题在于,当我尝试执行上述语句时,出现运行时错误:
-2147217904:没有给出一个或多个必需参数的值。
看起来这应该很简单,但我遗漏了一些东西,而且我还没有找到关于如何在SQL中处理多个工作表/字段/工作簿的任何好文档。
另外,我对SQL的熟练程度不高,所以我的SQL语法也可能出错......但我不确定。
欢迎任何帮助。
答案 0 :(得分:1)
万一我们错过了关于连接字符串或其他外围问题的内容,以下是您希望找到的关于该主题大多数方面的良好信息来源: http://www.xtremevbtalk.com/showthread.php?t=217783
但是我认为你需要加入这项工作 - 自从我使用EXCEL / ADODB以来已经有一段时间了,但你可以试一试:
SQLstr = "UPDATE [Location$] tLoc " & _
"INNER JOIN [Current Location$] tCur ON tCur.Name = tLoc.Name " & _
"SET tLoc.City = tCur.City"
编辑:跨2个文件的连接
SQLstr = "UPDATE [Location$] IN 'D\Data\target.xls' tLoc " & _
"INNER JOIN [Current Location$] tCur ON tCur.Name = tLoc.Name " & _
"SET tLoc.City = tCur.City"
未经测试 - 可能必须交换表别名
答案 1 :(得分:0)
我认为你的问题是你错过了一些引用''这是sql语句中所必需的。例如
"WHERE [Location$].[Name]=[Current Location$].[Name]" should be something like "WHERE
[Location$].[Name]= '" & [Current Location$].[Name] & "'".