首先,我想道歉,如果这个问题已经得到解答,但我找不到与我的问题有关的任何有用的搜索,因为我不知道问题的确切名称。
首先,我有这些表:
表A:
ID | Title | many more fields
------------------------------
1 | title1 | ....
2 | title2 | ....
...
表B:
ID | project_ID | Date B | many more fields
-------------------------------------------
1 | 1 | 01.01.2017
2 | 1 | 01.02.2017
3 | 1 | 01.03.2017
4 | 2 | 02.01.2017
5 | 1 | 01.05.2017
6 | 3 | 01.03.2017
...
表C:
ID | project_ID | Date C | many more fields
-------------------------------------------
1 | 1 | 01.01.2017
2 | 2 | 03.04.2017
3 | 2 | 11.10.2017
4 | 3 | 05.01.2017
5 | 1 | 06.02.2017
6 | 2 | 07.08.2017
...
表D:
ID | project_ID | Date D | many more fields
-------------------------------------------
1 | 1 | 02.02.2017
2 | 2 | 03.03.2017
3 | 3 | 11.11.2017
4 | 1 | 04.04.2017
5 | 1 | 06.06.2017
6 | 2 | 07.07.2017
...
我的目标是一个类似于以下内容的报告:
Title1
-------------------------------------------
Date B | Date C | Date D
01.01.2017 | 01.01.2017 | 03.03.2017
01.02.2017 | 06.02.2017 | 04.04.2017
01.03.2017 | | 06.06.2017
01.05.2017 |
Title2
-------------------------------------------
Date B | Date C | Date D
02.01.2017 | 03.04.2017 | 02.02.2017
| 11.10.2017 | 07.07.2017
| 07.08.2017
...
最好的结果是" Access Report Builder"我得到的东西:
Date B | Date C | Date D | Misc
01.09.2017 | 28.08.2017 | 24.08.2017 | Title 1
01.09.2017 | 28.08.2017 | 25.08.2017 | Title 1
01.09.2017 | 28.08.2017 | 26.08.2017 | Title 1
01.09.2017 | 29.08.2017 | 24.08.2017 | Title 1
01.09.2017 | 29.08.2017 | 25.08.2017 | Title 1
01.09.2017 | 29.08.2017 | 26.08.2017 | Title 1
但正如你所看到的那样重复那些不应该发生的日期。即使隐藏重复项,它也只能隐藏它们。日期D仍会显示重复。
上周我甚至得到了类似的东西:
SQL:
SELECT
P.ID,
P.title,
P_kov.ko_date AS dateKOV,
CVAR(NULL) AS dateAP,
CVAR(NULL) AS dateEP
FROM
P
LEFT JOIN
P_kov ON P.ID = P_kov.id_projekt
UNION
SELECT
P.ID,
P.title,
CVAR(NULL) AS dateKOV,
CVAR(NULL) AS dateAP,
P_ep.ep_date AS dateEP
FROM
P
LEFT JOIN
P_ep ON P.ID = P_ep.id_projekt
UNION
SELECT
P.ID,
P.title,
CVAR(NULL) AS dateKOV,
P_ap.ap_date AS dateAP,
CVAR(NULL) AS dateEP
FROM
P
LEFT JOIN
P_ap ON P.ID = P_ap.id_projekt;
注意:我使用CVAR导致它看起来像一个Date不能为NULL
结果:
Date KOV | Date AP | Date EP | title
01.09.2017 | | | Title 1
02.09.2017 | | | Title 1
| 28.08.2017 | | Title 1
| 29.08.2017 | | Title 1
| | 25.08.2017 | Title 1
| | 26.08.2017 | Title 1
但遗憾的是,报告将每个空白字段打印为一个新行。而且我在VBA方面的技能并不是那么好,我可以弄清楚如何将结果放入一个数组并放入"清理"文本字段中的值。
TLDR:我需要一个SQL-Query来获取我想要的报告,或者通过操作数据字段来处理VBA中的多个数据源
答案 0 :(得分:0)
不需要vba。假设B,C和D的更多字段是相同的,在查询构建器中构建一个查询,所有四个表仅通过项目将B-D连接到A上。然后使用报表中的组按项目标识对组标题中的标题进行分组。您应该能够将日期B,C,D标题放在详细信息部分标题中并获得所需内容。