0

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

Cle2                 Mont           Lettrage
acbd....            +8,36            Suspens    
abcd...             -8,36            Suspens
dced..              +12,89          Suspens
dced..              -12,89           Suspens


Cle2标识表中属于同一组的记录的字段在哪里是
Mont存储每条记录
Lettrage数量的字段是存储标签的字段,该标签将根据我的查询结果发生变化。

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

我已经在访问中完成了此操作,但是代码效率不高,我基本上要做的是:

1、创建一个名为provisional
2、将 select Query 的值插入到该表中的新表

代码:

INSERT INTO Provisor
SELECT Cle2 As Cle2p, Sum(MONTANT_ORACLE) AS Sum 
FROM ECD 
GROUP BY Cle2

3,创建一个表ECD2,空的,与ECD相同的字段
4,将连接语句的结果插入到该表中,如下所示:

代码:

INSERT INTO ECDlet1 
SELECT Provisor.lettrage As Let2, ecd.*
FROM Provisor 
LEFT JOIN ECD ON Provisor.[Cle2p]=ECD.Cle2

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

所以我想做的就是在不创建所有那些愚蠢的物理表的情况下做这样的事情,我想强调我在 Visual Basic 中使用 CurrentDb.Execute 语句执行查询。

预先感谢您的回答!

4

1 回答 1

1

怎么样:

UPDATE ECD 
SET ECD.lettrage = IIf(DSum("Mont","ECD","cle2='" & [cle2] & "'")=0,"Ok","Suspens");
于 2012-04-24T13:43:52.673 回答