MS ACCESS:添加 concatrelated 后“字段可以引用多个列出的表”

问题描述 投票:0回答:1

如果有类似的 OrderNo,我正在尝试 Allen Browne ConcatRelated 函数来连接产品名称,但添加此功能后

ConcatRelated("Product.ProductName", "OrderLine", "OrderLine.OrderNo = " & [OrderLine.OrderNo])AS Product 

它显示类似于此的错误

指定字段可以引用FROM子句中列出的多个表

但我不知道如何解决。

这是我的询问:

SELECT OrderLine.OrderNo,  ConcatRelated("Product.ProductName", "OrderLine", "OrderLine.OrderNo = " & [OrderLine.OrderNo])AS Product ,Sum(OrderLine.Quantity) AS SumOfQuantity, Sum([Quantity]*[Price]) AS Expr1
FROM [Order] INNER JOIN (Product INNER JOIN OrderLine ON Product.[ProductNo] = OrderLine.[ProductNo]) ON Order.[OrderNo] = OrderLine.[OrderNo]
GROUP BY OrderLine.OrderNo;

这是我的 TransactionQuery 看起来没有该功能:

---------------------------------
OrderNo | TotalItems | Price
1       | 4          | $70
2       | 1          | $25
----------------------------------

这是表格:

Customer Table:
--------------------------
CusomerNo(pk)  | Name
1              | John Wink
2              | John Wake
--------------------------

Order Table:
----------------------------------
OrderNo(pk) | CustomerNo(fk)
1           | 1
2           | 2
----------------------------------

OrderLine Table:
----------------------------------------------------------
OrderNo(fk) | ProductNo(fk) | Quantity | TotalPayment
1           | 1             | 2        | $20  
2           | 2             | 1        | $25 
1           | 2             | 2        | $50
----------------------------------------------------------

Product Table:
-----------------------------------
ProductNo(pk) | ProductName | Price
1             | Burger      | $10
2             | Pizza       | $25
-----------------------------------

编辑: 我粘贴了错误的代码,我更改了代码,当前查询给出了“编译错误。在查询 ConcatRelated("Product.ProductName", "OrderLine", "OrderLine.OrderNo = " & [OrderLine.OrderNo])AS Product "

谢谢你

ms-access
1个回答
1
投票

ProductName 不在 OrderLine 表中,因此 ConcatRelated 将失败。保存查询对象 - qryOrderProducts:

SELECT OrderLine.OrderNo, Product.ProductName
FROM OrderLine INNER JOIN Product ON OrderLine.ProductNo = Product.ProductNo;

然后这有效:

SELECT Order.OrderNo, Sum(Quantity) AS SumQty, Sum([Quantity]*[Price]) AS Total, 
ConcatRelated("ProductName","qryOrderProducts","OrderNo = " & [Order].[OrderNo]) AS Products
FROM ([Order] INNER JOIN OrderLine ON Order.OrderNo = OrderLine.OrderNo) 
INNER JOIN Product ON OrderLine.ProductNo = Product.ProductNo
GROUP BY Order.OrderNo;

可以修改 ConcatRelated 函数,以便它允许传递 SQL 语句并用它构建记录集。其他作者也有类似的函数可以做到这一点。

© www.soinside.com 2019 - 2024. All rights reserved.