通过 vba/sql 在 Access 中加入多个表

Posted

技术标签:

【中文标题】通过 vba/sql 在 Access 中加入多个表【英文标题】:Joining multiple tables in Access via vba/sql 【发布时间】:2016-12-01 12:28:50 【问题描述】:

我有一个表数据库,每个表包含两列,第一列是代码,第二列是金额。这些表是从每天创建的数据中提取的,如果代码是由该日期的外部事件触发的,则该代码将包含特定日期的数据。例如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 做到这一点?

谢谢

【问题讨论】:

您希望在每次运行 vba 代码时添加一列? 是的,对应于我要加入的表中的列的列。我实际上是将各个表格转换为二维表格,其中第一列将包含在该期间触发的所有代码,随后的列(名称与日期对应)由每天的“金额”组成。 Access 是一个关系型数据库,使用它时您应该遵循一些表的设计规则。在网上搜索“数据库规范化”(最终规范化)。你应该用一列重新设计你的数据库以包含日期 您不应该为每一天维护单独的表,也不应该为包含日期值的列。这将是一个令人头疼的管理问题。请注意下面@Kelaref 的评论和安德烈的回答。 【参考方案1】:

不。这不是数据库的工作方式。

您需要一个包含 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 |
+------+------------+---------+

代码+日期是主键。

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

【讨论】:

我明白你们在说什么,所以我更改了表格的格式,将日期作为字段而不是列标题包含在内。非常感谢交叉表的想法,它就像一种享受。 为糟糕的初始建设道歉。 虽然我确实考虑过链接 nooooooooooooooo.com ,但不需要道歉。 :) 我们都在这里学习。很高兴该解决方案适合您。 @naiminp

以上是关于通过 vba/sql 在 Access 中加入多个表的主要内容,如果未能解决你的问题,请参考以下文章

在数据库架构中加入表?

在 C# Access 数据库中加入 2 个表

来自 Access 的 Excel VBA SQL 没有结果

如何使用内部/外部组合在 Access 中加入 4 个以上的表?

在 spring jparepository 中加入多个表

在 MS ACCESS 中加入两个不同的计数查询