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

时间:2017-12-04 19:18:57

标签: access-vba ms-access-2013

我一直在微软,Stackoverflow,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不会填充。我知道必须有一个简单的解释。有什么建议吗?

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

1 个答案:

答案 0 :(得分:0)

我没有看到您的SQL存在任何问题。

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

cboCourse.Requery
cboVol.Requery

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