来自选择查询的一个单元格中的多个值

Posted

技术标签:

【中文标题】来自选择查询的一个单元格中的多个值【英文标题】:Multiple values in one cell from select query 【发布时间】:2019-10-25 07:36:46 【问题描述】:

我正在尝试执行选择查询以显示两个表中的值。以“客户”和“订单”为例。在客户表中,它只有客户 ID(主键)和客户名称(无重复项)。订单表显示客户名称(外键)和订单号。

当客户在订单表中有多个订单时,它会显示如下

Jon - Order1
Jon - Order2
Luke - Order1
Luke - ORder2
Luke - Order3
Mark - Order1

我怎样才能让选择查询像这样显示它

Jon - Order1, Order2
Luke - Order1, Order2, Order3
Mark - Order1

不必用逗号分隔。堆栈字段也可以使用。我的最终目标是有一个“订单表格”,在表格中的一个“订单”字段中列出每个客户及其所有订单/

表单示例将是一个带有 CustomerName 的文本框和另一个用于列出每个订单的文本框

当前 SQL

SELECT tblCustomers.CustomerName, tblOrders.Order#
From tblCustomers INNER JOIN tblOrders ON tblCustomers.CustomerName = tblOrders.CustomerName

【问题讨论】:

【参考方案1】:

MS Access 本身不提供此功能,因此,您需要使用类似于 Allen Browne 的 ConcatRelated 函数的 VBA 函数。

应用于您的示例,您可以通过以下方式使用此功能:

select
    t.customername, 
    ConcatRelated("[order#]", "tblorders", "customername = '" & t.customername & "'") 
from
    tblcustomers t

但是,我建议不要使用这种数据表示,而是使用子表单。


除此之外,您的表格链接到客户 Name 而不是 ID,这真的很奇怪。

【讨论】:

我只是用它作为一个例子来尝试让它变得简单。在我的实际表中,“订单”表中没有“客户 ID”值。 CustomerID 是客户表中的自动编号。如果有更好的方法,我愿意做不同的事情。我现在基本上是在自学 Access。此外,子表单也可以。我会调查的。使用子表单时,我仍然可以在一个框中显示多个值吗?因此,当名为 Luke 的客户有两个订单并且它在表中显示为两行时。我可以让这两个订单显示在卢​​克订单的一个文本框中吗? 只需阅读您发布的 ConcatRelated 函数即可。看起来它会做我想要完成的事情。如果使用子表单是执行此操作的更好方法。我宁愿那样做。不知道我怎么能做到这一点。不确定这是否可行,但另一种方法是将订单号放入一个文本框中。我可以让表单创建所需的许多文本框并将订单号放入其中。因此,在表单中,在订单号下,如果有两个与该客户关联的订单,它将有两个文本框 显示设置为数据表视图和通过客户 ID 链接的主/子字段的子表单将准确产生您希望获得的结果,而无需 VBA - 有很多 关于创建子表单和显示给定客户的订单列表的在线教程是一个非常典型的示例(它甚至可能包含在随 MS Access 免费提供的 Northwind 示例数据库中)。如果您在创建子表单时遇到困难,最好创建一个新问题,而不是在此处回复 cmets。

以上是关于来自选择查询的一个单元格中的多个值的主要内容,如果未能解决你的问题,请参考以下文章

如何根据多个单元格中的值自动填充

在tableView中选择多个单元格并将另一个tableView单元格中的选定单元格显示为标签?

用于工作表的谷歌应用脚​​本 - 选择多个列表值并记录在同一个单元格中

如何在 Open Office 宏的单元格中的列表框中显示当前值?

从上面的单元格中获取值

使用单元格中的值作为公式中的单元格引用?