复杂数据库中的conpatred() - 解析问题



我的任务分别是多桌查询或报告中的串联值。我发现艾伦·布朗(Allen Browne(的Concatred((函数似乎正在做我想要的。但是,我只是无法正常工作。我知道关于Stackoverflow上有关此主题的帖子很多,但是我已经阅读了近30个,但没有人真正解决了我的问题。

为了更好地理解,数据库看起来与此相似:

关系图的图片。

我需要做的是从test_1中输出所有不同的值及其在test_4中的实现。因此,通常,我会进行一个查询,该查询从test_1及其(间接(相关的值从test_4中获取所有值。我已经这样做了,它可以正常工作。但是,我们为test_1中的每个条目提供了多线,我们想要的是每个test_1的一行,其中test_4的值将convente_4串联为一行。实际DB中还有更多表_4之类的表,但是我认为一旦我将其用于该表工作,我就会没有问题。问题是我无法使该子句正常工作,该函数的查询有些有效,但是它将test_4的所有可能值都放入每个行中,而不仅仅是与test_4中的行相关的值em>。

我尝试使用常规查询进行操作,这无效。然后,我尝试了CONCATRED((函数。我看到它将test_4的所有可能值输出到串联字段中,而不仅仅是相关字段,所以我认为查询也许没有检查test_1中的每个记录。然后,我尝试为此构建一个嵌套循环的循环,这可能是不必要的,因为该函数应该能够自行执行此操作。

我创建了一个表,该表结合了我要在报告中显示的test_1和test_4关联值的值。第一个问题:我应该确保该表在内部连接加入吗?

具有该函数的查询将在此组合表上运行。这是我将在以下查询上运行的表:表

请注意,Where子句中的字段是文本字段!

查询目前如下:

SELECT ConcatRelated("Kategorie","conc_Table","TEST_1.Name ="  &  conc_Table.[Name],"",",") AS Expr1, conc_Table.Name, conc_Table.Ort
FROM conc_Table;

通过此查询和引号的组合,我得到了"模棱两可的名称"错误,但是错误消息将根据引号的组合而有所不同。

使用查询,我得到了Johanna/Linz/A,B,C代替Johanna/Linz/A

如果它确实有效(例如,如果我排除Where子句(,我将获得Test_4的每个条目,这是一个不希望的结果。我想询问查询或函数本身中是否存在语法错误或其他错误,或者所有这些是否均为

编辑:我的同事发现了错误。如果将来任何人都有相同的问题,则分享它。我在ConcatRed((中所做的是以下内容:

ConcatRelated("Kategorie","conc_Table","TEST_1.Name ="  &  conc_Table.[Name],"",",") 

这是错误的。该函数无法参考外部表。而不是test_1.name需要为conc_table.name。我认为当字段从其从本身获取值时无法更新该字段的Where子句,但可以。因此,循环时的Where子句会动态更新,浏览conc_table.name中的记录,然后将当前记录添加到WHERE子句中。正是我需要的。我希望这是可以理解的,如果没有,请给我发送消息。

既不是数据样本,也不是您的查询,这并不容易。

但是,如果(AS(您的输出列出了多个相同的记录,请在新查询中使用查询作为源,其中您要么通过应用 Dinters 组。然后将此查询用作concat/concat/加入字段的查询中的来源。

另外,如果您有很多记录,则可以从我的 djoin 函数中受益,在此处进行全面解释和记录:

从表或查询的一个字段加入(concat(值

如果您没有帐户,请浏览链接:阅读全文。

代码也在 github 上:vba.djoin

最新更新