【问题标题】:Cannot get ConcatRelated function (made by Allen Browne) to work无法使 ConcatRelated 函数(由 Allen Browne 制作)工作
【发布时间】:2021-06-16 21:28:38
【问题描述】:

我正在尝试以简单的方式使用 ConcatRelated 函数(由 Allen Browne 制作),但失败了!我在这个网站上看了很多很多问答,但都没有成功。

我的表 (CCDS_Countries) 包含三个字段:

  1. Country_ID -- 此表的唯一标识符 (UID)
  2. CCDS_ID -- 与此表具有一对多关系的另一个表 (CCDS_Data) 的 UID
  3. Countries -- 包含“EU”、“US”或“UK”的字段。

这是样本数据:

Country_ID CCDS_ID 国家
1 0 美国
2 1 欧盟
3 1 美国
4 1 英国

这是我想在查询中看到的输出:

CCDS_ID 国家/地区
0 美国
1 欧盟、美国、英国

Allen Browne 的代码作为“模块 2”保存在 MS Access DB 中。

我的查询有两个输出字段:[CCDS_ID] 和我的代码:

=SELECT DISTINCT [CCDS_ID], (ConcatRelated("[Countries]", "[CCDS_Countries]", "[Countries]")) FROM [CCDS_Countries];

当我运行查询时,我收到以下错误消息:“此表达式中子查询的语法不正确。检查子查询的语法并将子查询括在括号中”。

【问题讨论】:

    标签: vba ms-access


    【解决方案1】:

    首先,不能将SQL 语句作为文本框ControlSource。如果您想在表单的文本框中进行连接,只需调用函数:=ConcatRelated(...)

    其次,WHERE 条件条件不正确。必须从每条记录中传入 CCDS_ID,以便函数知道要为哪些累积相关值。在查询对象中,尝试:

    SELECT DISTINCT CCDS_ID, 
        ConcatRelated("Countries","CCDS_Countries","[CCDS_ID]=" & [CCDS_ID]) AS Countries
    FROM CCDS_Countries;
    

    可能执行得更快的替代查询:

    SELECT UID,
        ConcatRelated("Countries","CCDS_Countries","[CCDS_ID]=" & [UID]) AS Countries
    FROM CCDS_Data;
    

    如果您想在绑定到 CCDS_Data 表的表单或报表的文本框中进行连接:
    =ConcatRelated("Countries","CCDS_Countries","[CCDS_ID]=" & [UID])

    【讨论】:

    • 谢谢。我尝试了两种方法,但仍然没有成功,并且出现相同的错误消息。
    • 查看修改后的答案。
    • 我想在查询中使用串联的结果,而不是表单或报告。
    • 那为什么你的代码在SQL语句前面显示=符号呢?我展示的查询有效 - 我用表格进行了测试。
    • “=”是由于天真。即使从新数据库开始,并准确粘贴您提供的内容,我仍然会收到错误。
    【解决方案2】:

    将代码粘贴到“SQL 视图”中时,结果与预期一样,它按预期工作。我正在使用表达式生成器将代码放入“设计视图”中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-25
      • 2017-08-25
      相关资源
      最近更新 更多