【发布时间】:2014-07-11 20:11:59
【问题描述】:
我一直在为这个问题苦恼一段时间,我想知道是否有解决方案!
所以我有一个名为 R1 的表,在 Access 中有两个列:[Department] 和 [DepartmentQV],[Department] 列有一些带有值的字段,但 [DepartmentQV] 列是空白的
我还有一个 Excel 电子表格,它还有一个 [Department] 列和一个 [DepartmentQV] 列。 [Department] 列与 Access 中的列相同,但 [DepartmentQV] 列具有值。
我要做的就是使用 ADODB 和 SQL 将 Excel 工作表中的 [DepartmentQV] 值拉入到 [Department] 值匹配的 Access 数据库中。
不幸的是,这根本不起作用,我不断收到相同的错误“没有为一个或多个必需参数提供值”,我完全感到困惑。任何帮助,将不胜感激!感谢您抽出宝贵时间阅读本文!
最好, 库尔特
这是我目前的代码!
lastRow = ActiveWorkbook.ActiveSheet.Range("B" & ActiveWorkbook.ActiveSheet.Rows.Count).End(xlUp).Row
Set cn = CreateObject("ADODB.Connection")
dbPath = glob_sdbPath
dbWb = Application.ActiveWorkbook.FullName
dbWs = ActiveWorkbook.ActiveSheet.Name
scn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & dbPath
dsh = "[" & Application.ActiveSheet.Name & "$B2:C" & lastRow & "]"
cn.Open scn
sSql = "INSERT INTO R1([Department_QV])"
sSql = sSql & " SELECT [Spoilage] FROM [Excel 12.0;HDR=YES;DATABASE=" & dbWb & "]." & dsh & " WHERE " & dsh & ".[Department] = R1.[Department]"
cn.Execute sSql
【问题讨论】:
-
在您的 B2:Cx 范围内,您是否省略了标题行?在这种情况下,记录集不会有您期望的名称。此外,您的 SQL 很奇怪:您是在尝试插入新行还是更新现有行?
-
标题行实际上在 B2:C2 中,我实际上是在尝试更新现有行。我一直在使用带有 adodb 和访问的更新时遇到问题,你不会碰巧知道我可以用更新来实现我想要做的事情吗?到目前为止仍然没有运气叹息
标签: sql excel vba ms-access adodb