【发布时间】:2015-11-15 10:39:14
【问题描述】:
我是使用 VB6/Access 2000 的 SQL 新手,我正在尝试获取一个查询,该查询将一个表中的值总和放入另一个表中。 VB6 可以完成这项工作,但速度太慢了。 我在Access中搜索并尝试了很多次,只是因为关键字IN,ON,(INNER)JOIN而迷失了方向,每次都得到不同的错误。
核心代码应该如下:
update t1
set t1.value = sum(t2.value)
where
val(t2.code)>89
and
t2.date=t1.date
-
t1.date是一个日期,没有重复 -
t2.code是一个变量字符串,例如 '0081', '090' - 值是单精度的
经过进一步搜索,我在这里发现了一个类似的问题(http://goo.gl/uqlw0U)并尝试了:
UPDATE t1
SET t1.value =
(
SELECT
SUM(t2.value)
FROM spese
WHERE
t1.date=t2.date
AND
val(t2.code)>89
)
但 Access 只是说“需要可更新的查询”——这是什么意思?
【问题讨论】:
-
感谢编辑,我写的示例代码完全一样,但是当我发布时它变成了内联。
-
在没有“过程”存储过程工具的情况下,我怀疑您搞砸了,因为您想要的可能无法表示为基于 SQL 集的操作。因此,您可以在客户端代码中使用聚合查询的结果迭代更新的表,或者您可以使用 JOIN 和构建新表的生成表查询来执行此操作(然后 DROP 旧表,通过重命名新表ADOX,创建任何所需的索引)。
标签: vb6 ms-access-2000