2012-09-10 21 views
-1

我在寫入Microsoft Access中的VBA宏時遇到問題。我想要做的是使用SQL來創建一個輸出表,但我想同時寫入多個列。用SQL模擬寫入多列

這讓我我需要爲一列的所有值:

Docmd.RunSQL 「INSERT INTO Output (TargetCol1) SELECT [Field1] FROM [Table1] WHERE [Criteria1] = ‘Value’ GROUP BY Field1」 

當我嘗試運行此多次獲得我需要其他列的值。 INSERT INTO寫入數據作爲新的記錄,所以我結束了空格,如:

Field1----Field2 
Value----<Null> 
Value----<Null> 
Value----<Null> 
<Null>----Value 
<Null>----Value 

我要的是:

Field1----Field2 
Value---- Value 
Value---- Value 
Value----<Null> 

我試圖創建的變量並創建一種嵌套的語句,但我收到「編譯錯誤,對象需要對我的第一線,當我嘗試運行是我採寫:

Set x = Docmd.RunSQL 「INSERT INTO Output (TargetCol1) SELECT [Field1] FROM [Table1] WHERE  [Criteria1] = ‘Value’ GROUP BY Field1」 
Set y = Docmd.RunSQL 「INSERT INTO Output (TargetCol2) SELECT [Field2] FROM [Table1] WHERE [Criteria2] = ‘Value’ GROUP BY Field2」 
Docmd.runsql 「INSERT INTO Output (TargetCol1, TargetCol2) Values (x,y)」 

回答

2

爲什麼不:

INSERT INTO Output (TargetCol1,TargetCol2) SELECT [Field1,Field2] FROM [Table1] [Criteria1] = 'Value'" 

集用於對象,你沒有一個在Set x = Docmd.RunSQL。排序無關於表格。

設置查詢的最簡單方法是使用查詢設計窗口。它會引導你創建查詢,然後你可以切換到SQL視圖來獲取SQL。

我建議你不要使用RunSQL:What's the difference between DoCmd.SetWarnings and CurrentDB.Execute

+0

感謝您抽出寶貴的響應時間。我收到一個「錯誤的查詢值數目和目標值不一樣」。 GROUP BY消除冗餘值。 我正在查看您的鏈接。總是試圖學習如何編寫更好的代碼。 – Dobbes

+2

糟糕,我閱讀了分組順序。我不確定你在這裏做什麼。是否輸出表中有一個以上的列嗎?難道要更新的第二列,如果是這樣,你需要的東西加入嗎? 「插入」總是添加新記錄。 – Fionnuala

+0

你給了我一個想法,以創建單獨的表爲每個輸出列,分配一個唯一的ID,然後加入表一起。謝謝。 – Dobbes