通过vba/sql连接Access中的多个表

通过vba/sql连接Access中的多个表,sql,vba,ms-access,join,Sql,Vba,Ms Access,Join,我有一个表数据库,每个表包含两列,第一列是代码,第二列是金额。这些表是从每天创建的数据中提取出来的,如果某个代码是由某个日期的外部事件触发的,则该代码将包含该日期的数据。例如,2015-10-02日的表格如下所示: Code 2015-10-02 1 321.23 2 3442.13 3 679.2 4 6201.4 因此,每个表都有相同的第一列(代码),但代码每天都会有所不同。有些日子,我们可能会有不同的代码被触发比任何其他前一天(有史以来第一次被触发)或它

我有一个表数据库,每个表包含两列,第一列是代码,第二列是金额。这些表是从每天创建的数据中提取出来的,如果某个代码是由某个日期的外部事件触发的,则该代码将包含该日期的数据。例如,2015-10-02日的表格如下所示:

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实现这一点


谢谢

不。数据库不是这样工作的

您需要一个包含3列的表,如下所示:

Code  2015-10-02
1     321.23
2     3442.13
3     679.2
4     6201.4
+------+------------+---------+
|代码|日期|金额|
+------+------------+---------+
|    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 |
+------+------------+---------+
代码+日期是主键


然后,您可以通过交叉表查询(使用向导)获得代码与日期的矩阵。数据库不是这样工作的

您需要一个包含3列的表,如下所示:

Code  2015-10-02
1     321.23
2     3442.13
3     679.2
4     6201.4
+------+------------+---------+
|代码|日期|金额|
+------+------------+---------+
|    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 |
+------+------------+---------+
代码+日期是主键


然后,您可以通过交叉表查询(使用向导)获得代码与日期的矩阵。

您想在每次运行vba代码时添加一列吗?是的,与我要合并的表中的列相对应的列。我基本上是将各个表转换成一个2d表,其中第一列将包含在这段时间内触发的所有代码,随后的列(名称对应于日期)包含每天的“金额”。Access是一个关系数据库,在使用它的时候,你应该遵循一些桌子的设计规则。在网上搜索“数据库规范化”(最终规范化)。您应该使用列重新设计数据库以包含日期您不应该为每天维护单独的表,也不应该使用日期值的列。这将是一个令人头疼的管理问题。注意@Kelaref的评论和Andre在下面的回答。您希望在每次运行vba代码时添加一列吗?是的,与我要加入的表中的列相对应的列。我基本上是将各个表转换成一个2d表,其中第一列将包含在这段时间内触发的所有代码,随后的列(名称对应于日期)包含每天的“金额”。Access是一个关系数据库,在使用它的时候,你应该遵循一些桌子的设计规则。在网上搜索“数据库规范化”(最终规范化)。您应该使用列重新设计数据库以包含日期您不应该为每天维护单独的表,也不应该使用日期值的列。这将是一个令人头疼的管理问题。注意@Kelaref的评论和Andre的回答。我理解你们的意思,所以我改变了表格的格式,将日期作为字段而不是列标题。非常感谢crosstab的想法,它起到了很好的作用。为糟糕的初始构造道歉。虽然我确实考虑过链接,但不需要道歉。:)我们都是来学习的。很高兴这个解决方案对你有效@naiminpI明白你们的意思,所以我改变了表格的格式,将日期作为字段而不是列标题。非常感谢crosstab的想法,它起到了很好的作用。为糟糕的初始构造道歉。虽然我确实考虑过链接,但不需要道歉。:)我们都是来学习的。很高兴这个解决方案对你有效@奈明普