【问题标题】:Allen Browne's ConcatRelated() Error 3061: Too few parametersAllen Browne 的 ConcatRelated() 错误 3061:参数太少
【发布时间】:2019-02-20 15:07:11
【问题描述】:

我正在尝试在给定仓库创建产品列表。 Allen Browne 的 ConcatRelated() 函数似乎是在链接变量相同时创建列表的经过验证的真正方法,但我无法让它工作。

我已将我的信息分解为一个查询...“qry_Products”

SELECT qry_AX_LineItems_LINES.Warehouse, tblREF_Chemical.[Sales Name]
FROM qry_AX_LineItems_LINES INNER JOIN tblREF_Chemical ON 
qry_AX_LineItems_LINES.ItemId = tblREF_Chemical.[Item Number]
GROUP BY qry_AX_LineItems_LINES.Warehouse, tblREF_Chemical.[Sales Name];

它会生成一个包含销售名称和仓库的表格。

我需要看到的是当他们的仓库匹配时销售名称的列表。

我尝试在表单的文本框中使用该函数...

=ConcatRelated("[Sales Name]","[qry_Products]"," Warehouse ='" & [Warehouse] 
& "'")

它会导致错误 3061 并将单元格留空。

我使用 Dlookup() 仔细检查了引号内的语法,它产生了列表的第一个结果。

我也尝试过更改我的查询...

SELECT qry_AX_LineItems_LINES.Warehouse, ConcatRelated("[Sales Name]"," 
[tblREF_Chemical]") AS Expr1
FROM qry_AX_LineItems_LINES INNER JOIN tblREF_Chemical ON 
qry_AX_LineItems_LINES.ItemId = tblREF_Chemical.[Item Number];

不幸的是,它随后将我数据库中的每个产品都列为列表。

我还尝试创建一个新查询来引用产生最少信息的查询。

SELECT ConcatRelated("[Sales Name]","qry_Products") AS Expr1
FROM qry_Products;

我知道初始查询是正确的,但是当我运行新查询时,我收到多个错误 3061 弹出窗口和空单元格以显示结果。

我仔细检查了我是否准确地复制了模块。 http://allenbrowne.com/func-concat.html 模块名为“Concat”。

我正在阅读那里的所有帮助指南,但我不知道接下来应该尝试什么。

非常感谢您的时间和任何建议!

SubForm frm_LineItems

Query qry_Products

【问题讨论】:

  • 表单上的 Warehouse 是什么类型的控件?它是否放置在子表单中?打开表单后,在查询设计器中运行(填写表单名称),不带引号:SELECT [Sales Name] FROM [qry_Products] WHERE Warehouse = Forms!myform![Warehouse]
  • 我运行了这个并且确实得到了产品的列列表。我有 [frm_SalesOrderEntry] 允许用户选择给定的销售订单...它与我公司的操作系统集成以提取订单信息。虽然订单有一个主仓库操作员,但一个订单下可能有多个仓库,并以子表单表示。
  • 产品栏目列表?但是这个查询运行 Sales Name?再次,Warehouse 控件是否位于子窗体上?是组合框吗?也许为我们截取您的表格。
  • 我需要引用的仓库在子表单上,因为可以有多个仓库。我已经包含了我的子表单和工作查询的一些图像。
  • 当我尝试引用子表单时,我收到一个参数请求,它会让我引用主表单,但是我只得到一个仓库的值,它们仍然在一列中。

标签: sql concatenation ms-access-2016


【解决方案1】:

我找到了另一个可以替代 Allen Browne 方法的线程。 https://bytes.com/topic/access/answers/569535-combining-rows-opposite-union

这似乎有效。

'Concat Returns lists of items which are within a grouped field
Public Function Concat(strGroup As String, strItem As String) As String
Static strLastGroup As String
Static strItems As String

If strGroup = strLastGroup Then
    strItems = strItems & ", " & strItem
Else
    strLastGroup = strGroup
    strItems = strItem
End If
Concat = strItems
End Function

使用查询 SQL

SELECT WH,
Max(Concat(WH, [Sales Name])) AS Products
FROM [qry_Products]
GROUP BY WH

我想把它留在这里,以防其他人遇到类似问题。

【讨论】:

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