2012-10-17 148 views
2

我每月從Excel表格獲取數據,需要將數據導入到Access表格中,與Excel表格相同。然後,我需要的Access表(輸入表)轉變成正常訪問表(輸出表)...將表格轉換爲正常表格

請提供建議

  1. 如何在訪問..since創建一個動態輸入表新列可以在Excel表格中添加或刪除(例如:201211)
  2. 如何將輸入錶轉換爲訪問中的輸出表。

輸入表:(列名:產品|地點| 201209 | 201210)

Product | Location | 201209 | 201210 

X  | DK  | 10  | 12 
y  | DK  | 10  | 12  

輸出表:

Product | Location | Date | Quantity 

X  | DK  |201209 | 10 
X  | DK  |201209 | 12 
Y  | DK  |201210 | 10 
Y  | DK  |201210 | 12 

我的輸入表中包含更多的列(如:201208,2012209,201210 ....... 201402)

回答

1

你可以從這樣的查詢得到你想要的輸出:

Select Product, Location, '201209' as [Date], Table.[201209] as Quantity from Table 
UNION 
Select Product, Location, '201210' as [Date], Table.[201210] as Quantity from Table 

你提到你的列名可以改變。你可以通過創建一個查看TableDef的VBA子例程來解決這個問題,然後爲所有列創建一個SQL查詢,然後將記錄插入到表中。

+0

+1同時考慮'UNION ALL'可能會更快。只是'UNION'對避免重複行很有用,但我懷疑這適用於此。 – HansUp

+0

@HansUp是的,UNION ALL會更快,但如果它是一張小桌子或不經常運行,它可能沒有什麼大不了。如果查詢將用於INSERT命令到表中,則可能必須更改列標題,因爲「Date」是Access中的保留字,應予以避免。 – KFleschner

+1

默認爲'UNION ALL'。當您想清除重複的行時,只選擇'UNION'。不要浪費時間在心理計算上「這種情況只有少量的行,所以UNION ALL的性能好處不太可能被注意到」。當它返回你不想要的重複行時,'UNION ALL'只會是錯誤的選擇。 – HansUp