【发布时间】:2022-01-18 15:44:51
【问题描述】:
我的 Access 数据库存在以下问题:
我有 3 个表,它们是 tblComponents、tblErrors 和 linkComponentsErrors。这是多对多的关系,这意味着一个组件可能有很多错误,而一个错误可能有很多组件。这些 a 与它们在 linkComponentsErrors 中的 primaryKey(tblComponents.componentID 和 tblErrors.errorID)链接。这两个表也都有一个字段用于他们的名字
tblComponents / tblErrors / linkComponentsErrors
|compID|compname| |errID|errname| |compID|errID|
+------------+ +------------+ +------------+
| 1 | HDD-300 | | 1 | E101 | | 1 | 1 |
+------------+ +------------+ +------------+
| 2 | SSD-100 | | 2 | E404 | | 1 | 2 |
+------------+ +------------+ +------------+
| 3 | CPU-i7 | | 3 | E123 | | 2 | 2 |
+------------+
| 2 | 3 |
+------------+
| 3 | 3 |
对于连接,我使用Allen Browne的VBA代码
当我使用串联进行此查询时
SELECT tblComponents.compName, ConcatRelated("errorID", "linkComponentsErrors", "compID = " &[linkComponentsErrors].[compID]) FROM tblComponents;
我明白了:
|compName|Expr|
+------------+
| HDD-300 | 1, 2 |
+------------+
| SSD-100 | 2, 3 |
+------------+
| CPU-i7 | 3 |
+------------+
但我想要的是这样的:
|compName|Expr|
+------------+
| HDD-300 | E101, E404 |
+------------+
| SSD-100 | E404, E123 |
+------------+
| CPU-i7 | E123 |
+------------+
我在 Concat 函数中的 SQL 语法中迷失了这个连接到错误的名称。如果您知道解决此问题的方法,我将非常高兴。
【问题讨论】:
-
看来您只需将
ErrorID(errID?) 更改为ErrName -
但是我在哪里说 errName 属于 tblErrors?该方法不知道 errName 来自哪里。