尝试根据另一个组合框的选择填充两个组合框

Posted

技术标签:

【中文标题】尝试根据另一个组合框的选择填充两个组合框【英文标题】:Trying to populate two comboboxes based upon selection of another combobox 【发布时间】:2017-12-04 19:18:57 【问题描述】:

我一直在 Microsoft、***、techinthenet.com 和其他几个网站上搜索这个问题,但没有找到真正的解决方案。

我正在尝试根据 cboTrainee_Name 的选择来填充两个组合框(cboCourse 和 cboVols)。第一个组合框的代码是:

SELECT DISTINCT [qryBooks].[PName] FROM qryBooks WHERE qryBooks.Complete=No ORDER BY [qryBooks].[PName];

我搜索过的每个地方都提供帮助和示例来填充第一个组合框,然后根据第一个中选择的内容填充第二个组合框。我需要 cboCourse 和 cboVols 根据同一查询的结果进行填充。到目前为止我所拥有的是:

Private Sub cboTrainee_Name_AfterUpdate()

    cboCourse.RowSource = "SELECT DISTINCT [qryBooks].[Book] FROM qryBooks WHERE [qryBooks].[PName]=[Forms]![frmIntro]![cboTrainee_Name] ORDER BY [qryBooks].[Book];"

    cboVol.RowSource = "SELECT DISTINCT [qryBooks].[Vols] FROM qryBooks WHERE [qryBooks].[PName]=[Forms]![frmIntro]![cboTrainee_Name] ORDER BY [qryBooks].[Vols];"

End Sub

这适用于 cboCourse,但不会填充 cboVols。我知道必须有一个简单的解释。有什么建议吗?

添加!我使用 SELECT DISTINCT 是因为查询中的每一列都包含相同数据的多个实例。

【问题讨论】:

【参考方案1】:

我认为您的 SQL 没有任何问题。

在更改 cboTrainee_Name 后,您可能需要在两个组合框上调用 Requery 方法以使它们刷新:

cboCourse.Requery
cboVol.Requery

请注意,您不必在代码中设置 RowSource 属性即可。您应该能够像在 RowSource 属性中一样插入您的 SQL 语句,并且只需在 cboTrainee_Name 组合框的 AfterUpdate 事件中的依赖组合框上插入 Requery 方法。

【讨论】:

我将 SELECT 语句放在每个 cbo 的 RowSource 下,并将 requery 语句插入到 cboTrainee_Name AfterUpdate 事件下。它仍然做同样的事情;根据需要填充和刷新 cboCourse,但 cboVol 中没有数据。 您是否可能在 qryBooks 查询中没有选定的 Trainee_Name? 另外,请仔细检查 cboVol 上的 Bound Column、Column Count 和 Column Widths 设置与 cboCourse 上的设置。由于格式化配置,可能存在不可见的基础数据。您可以比较两个组合框,但作为一种捷径,只需删除 cboVol,复制粘贴 cboCourse 并更改控件名称和 RowSource 属性。 我试过你的快捷方式。在使用了 requery 语句之后,我终于得到了它来做我需要的事情。非常感谢。

以上是关于尝试根据另一个组合框的选择填充两个组合框的主要内容,如果未能解决你的问题,请参考以下文章

如何根据从另一个组合框进行的选择来填充组合框

如何使用组合框根据另一个组合框的值从不同的表中选择数据

改变一个组合框的值会导致另一个组合框的值改变

连续表单将文本框填充到另一个表单

如何将两个组合框的选定项与单个数据源分开?

使用 php 从组合框插入