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

Trying to populate two comboboxes based upon selection of another combobox

我一直在 Microsoft、Whosebug、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,因为查询中的每一列都包含相同数据的多个实例。

我没有发现你的 SQL 有任何问题。

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

cboCourse.Requery
cboVol.Requery

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