2014-01-16 44 views
1

我想從Access中的多個輔助表更新主表。我希望在一個查詢的範圍內使用多個SQL語句來執行此操作。請參閱下面的多條語句。有沒有辦法寫這個來更新主表中的兩個字段,並使用語言來連接同一個查詢中的兩個語句?我希望我不必創建60個更新查詢來執行此操作。結合多個更新查詢

UPDATE [Master Output Table], [Input table] 
SET [Master Output Table].[Field 1] = [Input table]![Field 1] 
WHERE ((([Input table]![Field 1])="AAAA") AND (([Master Output Table]![Field 1])="BBBB")); 

UPDATE [Master Output Table], [Input table] 
SET [Master Output Table].[Field 1] = [Input table]![Field 1] 
WHERE ((([Input table]![Field 1])="CCCC") AND (([Master Output Table]![Field 1])="DDDD")); 
+0

當我使用OR,我得到如下: – user3204048

回答

0

因爲一切似乎是相同的,你應該能夠公正或您在這裏條款:

UPDATE [Master Output Table], [Input table] 
SET [Master Output Table].[Field 1] = [Input table]![Field 1] 
WHERE ((([Input table]![Field 1])="AAAA") AND (([Master Output Table]![Field 1])="BBBB")) 
    OR 
     ((([Input table]![Field 1])="CCCC") AND (([Master Output Table]![Field 1])="DDDD")) 
+0

這似乎是最好的選擇,但是當我使用或者,我得到一個語法錯誤。我在下面做錯了什麼? UPDATE [主輸出表格],[奧古斯塔輸入表格] SET [主輸出表格] [區域變更Ar傳輸自] = [奧古斯塔輸入表格]![數量5628] 何處((([奧古斯塔輸入表格]![交易(主輸出表格)![交易類型])=「數量5628」)) 或 更新[主輸出表格],[奧古斯塔輸入表格] SET [主輸出表]。[區域更改轉移自] = [奧古斯塔輸入表]![稅額5628] 其中... – user3204048

+0

是的,您沒有使用我發佈的UPDATE命令。您在OR之後重複UPDATE。 –

+0

好的,我認爲問題是我每次都需要一個新的設置。讓我試試這個,我認爲它會起作用。 – user3204048

1

您還可以創建存儲過程,並只傳遞2個輸入。然後你需要調用存儲過程60次。您可以存儲過程如下

Create Procedure UpdateTable 
(
     @field1 VARCHAR(200), 
     @field2 VARCHAR(200) 

) 
As 
Begin 
    UPDATE [Master Output Table], [Input table] 
    SET [Master Output Table].[Field 1] = [Input table]![Field 1] 
    WHERE ((([Input table]![Field 1])= @field1) AND (([Master Output Table]![Field 1])= @field2)); 

End 

然後調用它像Execute UpdateTable 'AAA','BBB'