【问题标题】:Microsoft Access 2016 loop query?Microsoft Access 2016 循环查询?
【发布时间】:2018-06-12 13:58:32
【问题描述】:

我有一个包含帐号和 UPC 编号的表格。 UPC 编号是唯一的,但每个 UPC 可能有多个与之关联的帐号。它可能只有一个帐号,也可能有多个帐号。

我想做的是获取与 UPC 字段关联的帐号的完整列表,但将它们全部放在一个结果字段中,用逗号或分号分隔。

例如关于查询结果....

UPC                        Account Number
1225486214781              R0002458; R3325482; M2154865; M5214861; C2145789

循环查询可以让我这样做吗?如果是这样,我将如何将它们放在一起?

【问题讨论】:

    标签: sql vba loops


    【解决方案1】:

    考虑一下 Allen Browne 的 ConcatRelated(),您可以在其中通过执行以下操作来实现:

    1. 将 VBA 公共函数代码放在标准模块中(不在任何表单/报告后面)。

    2. 通过 SQL 查询调用它。下面假设 UPC 是一个字符串列,否则删除单引号换行。此外,请务必将默认分隔符更改为分号。

      SELECT UPC,  
             ConcatRelated("[Account Number]", "myTable", "UPC = '" & [UPC] & "'",
                           strSeparator = "; ")
      FROM myTable;
      

    请注意:由于您正在运行特定于 VBA 的方法,因此如果您在 GUI 之外运行 MS Access(即 MSAccess.exe),例如 ODBC/OLEDB 连接,则此功能将不可用。

    【讨论】:

    • 谢谢。我一直在查看 Allen Browne 的 ConcantRelated(),但无法在没有编译错误的情况下创建模块。这是我要输入的内容: SELECT PARCELNUMBER, ConcatRelated("ACCOUNTNUMBER", "dbo_ACCOUNT", "PARCELNUMBER = " & [PARCELNUMBER]) FROM dbo_ACCOUNT;我从中提取的表是 dbo_ACCOUNT。
    • PARCELNUMBER 替换了上面的 UPC。
    • 什么错误? PARCELNUMBER 是字符串还是数字?请参阅我对此项目的说明。
    • PARCELNUMBER 是 AlphaNumeric 设置为 64 个字符。我一直在研究这个并让模块保存好。我意识到我必须在其中放置一个 WHERE 语句来过滤活跃的记录和当前纳税年度。我在让 where 语句工作时遇到问题,所以我做了一个表,过滤了我想要的帐户,并试图从该表运行 concantrelated 查询。我现在收到一条错误消息:错误 3075:查询表达式中字符串中的语法错误 'PARCELNUMBER= 2057170475174"
    • 这意味着 PARCELNUMBER 是一个字符串,所以完全按照我发布的使用 UPC 和单引号包装而不是你如何处理上述评论它假设一个数字。请注意:ConcatRelated() 有一个可选的 strwhere 参数。
    猜你喜欢
    • 1970-01-01
    • 2023-03-20
    • 2015-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-04
    • 2016-06-19
    相关资源
    最近更新 更多