包含子查询的组合框

Combo Box with a sub query in it

所以我的老板希望我将这个子查询添加到一个组合框中,该组合框显示来自其下另一个查询的信息。老实说,我不知道该怎么做。

目前这是我填充组合框的代码

cmbGroups.RowSource = "Select GroupName, GroupNum from tblGroupHeader Where GroupName like '" & txtgroupSearch.Value & "*' or GroupNum like '" & txtgroupSearch.Value & "*';"
cmbGroups.Requery
cmbGroups.SetFocus
cmbGroups.Dropdown

在表单视图中看起来像这样。

我需要添加另一个查询,如下所示:

"Select * from tblAlsoKnown where groupNum like '" & cmbGroups.Column(2) '";"

它应该做的是将所有 alsoKnown 组放在适当的组名下,这些组名由组名链接。这是一对多的关系,因此一个组名可以有多个也已知的组。

所以如果我看上面的图片,组 "test1231" 下应该有所有也已知的组。

一点前提我的数据库中实际有大约220个组。每一个都有自己唯一的组号。由于公司合并和吸收其他公司,集团经常会更改名称。一个很好的例子是 "Crysler" 如何更改为 "Daimler Chrysler"。重要的是我记录谁,谁。所以我创建了一个 alsoKnown table 允许我查看公司以前的名称。每个公司都可以有许多 alsoKnown 名称,它们都与 GroupNum 相关联。

我想知道其他程序员的想法和意见。也许最好采取的步骤;真的什么都有用。

我认为最简单的解决方案是仅更改填充组合框的 SQL 查询,使其获取您想要的所有值。像这样:

"Select hea.GroupName, hea.GroupNum, kno.alsoKnownAs
FROM tblGroupHeader AS hea 
     INNER JOIN tblAlsoKnown AS kno 
                ON hea.groupNum = kno.groupNum 
WHERE hea.GroupName like '" & txtgroupSearch.Value & "*' OR
      hea.GroupNum like '" & txtgroupSearch.Value & "*' OR
      kno.GroupNum like '" & txtgroupSearch.Value & "*';"

您应该使用 GROUP BY 命令根据自己的喜好对值进行分组。

然后您只需像之前那样填充组合框即可。

我的建议:也许您可以添加第三列 "Also Known as" 并将所有 AlsoKnown 值放在那里?当然,您需要再次更改 sql 查询。

此致