访问表单级联组合框在下拉菜单中不显示任何内容

Access form cascading combo box shows nothing in drop down menu

我正在尝试创建一个带有级联组合框的数据输入表单来限制用户选项。我让它工作了一会儿,然后它决定退出。我可能只是想得太多了。

我将需要设置大约 50 个盒子。第一个是一对多。我得到了第一个正确添加到新记录的框。当我到达第二个组合框时,下拉菜单什么也没有显示。直到我在条件中输入 [forms]![NewSpecForm]![cboBoxSize] 才好。如何创建真正永久有效的级联组合框?

我的第三个组合框是多对多的,所以我为此创建了一个连接 table。我找到了几个关于如何为级联组合框加入 tables 的教程,一旦我开始工作,第一个和第二个框没有向新记录添加正确的信息。

如果我单独留下 AfterUpdate 并单独使用第二个框,它会将 ID 添加到新记录而不是名称。我该如何解决?

首先,让我们确保理解"cascading combo boxes"背后的概念。逻辑的运行方式是,在您从 Combo1 中创建 selection 后,Combo2 中可用的选项将发生变化,因此它们是仅与 Combo1 相关的项目。类似地,在我们 select 来自 Combo2 的项目之后,Combo3 中的项目将只是与用户 select 在 Combo2 中编辑的内容相关的项目。

所以,首先,除了Combo1之外的每个组合框都应该是空的,或者应该与Combo1的默认值有关。两种方式都可以。

接下来,在Combo1的AfterUpdate事件中,应该是这样的:

Me.cboCombo2.RowSource = "SELECT MyFieldNames " & _
                           "FROM tblMyTable " & _
                           "WHERE SomeID = " & Nz(Me.cboCombo1) & _  
                           "ORDER BY SomeValue"
Me.cboCombo2.Requery

显然,MyFieldNames、tblMyTable 和所有其他值将取决于您实际查找的内容、源 table/query 名称和字段名称等...

好的,现在 Combo2 应该填充仅与您在 Combo1 中 select 编辑的内容相关的数据,因为我们在上面的 SQL 中使用 Combo1 作为过滤器。

如果看起来没问题,请为 Combo3 做大致相同的事情。您可能需要过滤来自两个组合的值,或者您可以仅在 Combo2 中使用该值,具体取决于您的数据集。

起泡、冲洗、重复。我想如果你有 50 个连击,你将需要这样做 50 次,但这就是完成的方式。

如需进一步参考,请参阅这篇文章:http://www.fmsinc.com/microsoftaccess/forms/combo-boxes/cascading.html