2012-04-24 51 views
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並在同時和蒙特(Sum(Mont))的值,然後檢查是否在Mont值相加,並通過cle2分組都等於零或不ECD表。如果它們等於零,我更新Lettrage將這些記錄標記爲OK,如果不是,我將這些記錄標記爲SUSPENS!

我在訪問已經做到了這一點,但代碼是不那麼有效了什麼我基本上做的是:

1,創建一個新的表名爲provisional
2,插入此表中選擇的值查詢

代碼:

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我想要做的是做這樣的事情,而不創建所有這些愚蠢的物理表 我想強調我使用CurrentDb.Execute語句在Visual Basic中執行查詢。

預先感謝您爲您解答!

回答

1

如何:

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

這是很好的!謝謝!!!! – jsirico 2012-05-04 10:24:04

相關問題