2016-12-01 4 views
0

Ich habe eine Datenbank mit Tabellen, jede enthält zwei Spalten, die erste ist ein Code, der zweite ist ein Betrag. Die Tabellen werden aus Daten abgerufen, die täglich erstellt werden, wobei ein Code Daten für ein bestimmtes Datum enthält, wenn er von einem externen Ereignis an diesem Datum ausgelöst wurde. Für z.B. der Tisch für Tag 2015.10.02 würde wie folgt aussehen:Mehrere Tabellen in Access über vba/sql verbinden

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

So jede Tabelle hat die gleiche erste Spalte (Code), aber die Codes werden jeden Tag variieren. An manchen Tagen können unterschiedliche Codes ausgelöst werden als an jedem anderen vorherigen Tag (zum ersten Mal, wenn es jemals ausgelöst wurde) oder an einem vorherigen Tag, jedoch mit einem anderen Betrag. Die Tabelle I erstellen wollen, werden wie folgt aussehen:

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 
. 
. 

Ich weiß, dass ich alle Tabellen beitreten könnten, aber ich möchte auch auf alle neuen Codes hinzuzufügen und eine 0 für jede der Vortage übernehmen Sie den Code nicht ausgelöst an. Gibt es eine einfache Möglichkeit, dies über VBA/SQL zu tun?

Dank

+0

Sie möchten jedes Mal, wenn Sie Ihren VBA-Code ausführen, eine Spalte hinzufügen? – Kelaref

+0

Ja, Spalte, die der Spalte in der Tabelle entspricht, die ich anmelde. Ich konvertiere im Wesentlichen die einzelnen Tabellen in eine 2-D-Tabelle, wobei die erste Spalte aus allen Codes besteht, die während des Zeitraums ausgelöst wurden, und die nachfolgenden Spalten (mit Namen entsprechend dem Datum) aus "Beträgen" für jeden Tag bestehen. – naiminp

+1

Access ist eine relationale Datenbank, und wenn Sie sie verwenden, sollten Sie einige Entwurfsregeln für Ihre Tabellen befolgen. Suchen Sie im Internet nach "Datenbanknormalisierung" (eventuell Normalisierung). Sie sollten Ihre Datenbank mit einer Spalte neu gestalten, um die Daten einzubeziehen. – Kelaref

Antwort

3

Nein. So funktionieren Datenbanken nicht.

Sie benötigen eine Tabelle mit 3 Spalten, wie folgt aus:

+------+------------+---------+ 
| 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 | 
+------+------------+---------+ 

-Code + Datum der Primärschlüssel ist.

Dann können Sie Ihre Matrix Code gegen Datum mit einer Kreuztabellenabfrage erhalten (verwenden Sie den Assistenten).

+0

Ich verstehe, was Sie sagen, also habe ich das Format der Tabellen geändert, um das Datum als Feld statt als Spaltenüberschrift zu enthalten. Vielen Dank für die Kreuztabellen-Idee, es hat wie ein Leckerbissen funktioniert. – naiminp

+0

Entschuldigung für die schlechte anfängliche Konstruktion. – naiminp

+0

Obwohl ich über http://www.noooooooooooooo.com/ nachdenken wollte, ist eine Entschuldigung nicht nötig. :) Wir sind alle hier um zu lernen. Froh, dass die Lösung für Sie funktioniert. @ Naiminp – Andre