2016-12-01 54 views
0

我有一個表的數據庫,每個表包含兩列,第一個是代碼,第二個是數量。這些表格是從每天創建的數據中提取的,如果某個代碼由該日期的外部事件觸發,則該代碼將包含特定日期的數據。對於例如對於2015年10月2日一天的表是這樣的:在Access中通過vba/sql連接多個表

Code 2015-10-02 
1  321.23 
2  3442.13 
3  679.2 
4  6201.4 

所以每個表都有相同的第一列(代碼),但代碼的每一天都會有所不同。有些日子,我們可能會觸發不同的代碼,比前一天(首次觸發)或前一天觸發的代碼不同,但金額不同。我想創建表的樣子:

Code 2015-10-02 2015-10-03 2015-10-04 .... 
1 321.23  0   0   
2 3442.13 0   10.42 
3 679.2  41.2  0 
4 294.12  41.31  1042.12 
5 0   0   371.14 
. 
. 

我知道我可以參加所有的表,但我想任何新的代碼爲每個前幾天的代碼是不添加爲好,假設0觸發。 有沒有一種簡單的方法可以通過VBA/SQL來實現?

謝謝

+0

您希望每次運行vba代碼時添加一列? – Kelaref

+0

是的,對應於我加入的表中的列的列。我基本上是將單個錶轉換爲一個二維表,其中第一列將包括在該期間觸發的所有代碼,以及隨後的列(名稱對應於日期)由每天的「金額」組成。 – naiminp

+1

訪問是一個關係數據庫,使用它時,你應該遵循你的表的一些設計規則。在網上搜索「數據庫標準化」(最終標準化)。您應該重新設計您的數據庫的列以包含日期 – Kelaref

回答

3

Nooo。這不是數據庫的工作方式。

你需要一個表3列,就像這樣:

+------+------------+---------+ 
| Code | Date | Amount | 
+------+------------+---------+ 
| 1 | 2015-10-02 | 321.23 | 
| 2 | 2015-10-02 | 3442.13 | 
| 3 | 2015-10-02 | 679.2 | 
| 4 | 2015-10-02 | 6201.4 | 
| 3 | 2015-10-03 | 41.2 | 
+------+------------+---------+ 

代碼+日期是主鍵。

然後,您可以使用交叉表查詢(使用嚮導)獲取代碼與日期的矩陣。

+0

我明白你們在說什麼,所以我改變了表格的格式,把日期作爲字段而不是列標題。非常感謝交叉表的想法,它的工作方式就像一個美食。 – naiminp

+0

對窮人的初步建設道歉。 – naiminp

+0

雖然我的確在考慮鏈接http://www.nooooooooooooooo.com/,但並不需要道歉。 :)我們都在這裏學習。很高興解決方案適合你。 @naiminp – Andre