Ms access 从组查询更新而不创建物理表

Ms access 从组查询更新而不创建物理表,ms-access,select,group-by,temp-tables,Ms Access,Select,Group By,Temp Tables,我有一个名为ECD的表,如下所示: Cle2 Mont Lettrage acbd.... +8,36 Suspens abcd... -8,36 Suspens dced.. +12,89 Suspens dced.. -12,89 Suspens 其中

我有一个名为ECD的表,如下所示:

Cle2                 Mont           Lettrage
acbd....            +8,36            Suspens    
abcd...             -8,36            Suspens
dced..              +12,89          Suspens
dced..              -12,89           Suspens
其中
Cle2
是标识表中属于同一组的记录的字段
Mont
是存储每条记录的金额的字段
Lettrage
是存储标签的字段,该标签将根据我的查询结果进行更改

我要做的基本上是将表ECD按Cle2分组,同时将Mont的值求和(
sum(Mont)
),然后检查Mont中的值是否按
Cle2
进行求和和和分组。如果它们等于零,我将更新
Lettrage
将这些记录标记为OK,否则将这些记录标记为SUSPENT

我已经在access中完成了这项工作,但代码效率不高。我主要做的是:

1、创建一个名为
临时的新表

2、在此表中插入select查询的值

代码:

INSERT INTO Provisor
SELECT Cle2 As Cle2p, Sum(MONTANT_ORACLE) AS Sum 
FROM ECD 
GROUP BY Cle2
3、创建一个表ECD2,为空,具有与ECD相同的字段
4、在该表中插入join语句的结果,如下所示:

代码:

5,然后清洁数据库并用正确的标签更新
Lettrage

所以我想做的是做一些类似的事情,而不是创建所有那些愚蠢的物理表 我想强调我是通过使用CurrentDb.execute语句在Visual Basic中执行查询的

提前感谢您的回答

那么:

UPDATE ECD 
SET ECD.lettrage = IIf(DSum("Mont","ECD","cle2='" & [cle2] & "'")=0,"Ok","Suspens");
UPDATE ECD 
SET ECD.lettrage = IIf(DSum("Mont","ECD","cle2='" & [cle2] & "'")=0,"Ok","Suspens");