通过 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 中加入多个表的主要内容,如果未能解决你的问题,请参考以下文章
来自 Access 的 Excel VBA SQL 没有结果