级联组合框不更新第二个框选项

Cascading Combo box doesn't update 2nd box options

我正在使用 MS Access 2010 来存储有关在我们医院进行的审计的记录。我正在尝试创建一个表单,它将根据下拉选项过滤审核 selected.

我希望专业组合框从 Directorate 级联,所以如果我 select "Family and Public Health" Directorate,只有该 Directorate 内的专业才会出现在下面的组合框中。

我的 ComboDirectorate 行源是 SELECT [tblDirectorate].[Directorate Key], [tblDirectorate].[Directorate] FROM tblDirectorate;

我的 ComboSpecialty 行源是 SELECT tblSpecialty.[Specialty Key],tblSpecialty.Specialty FROM tblSpecialty;

然后我有 ComboDirectorate 的更新后代码:

Private Sub ComboDirectorate_AfterUpdate()
Me.ComboSpecialty.RowSource = _
  & "SELECT [tblSpecialty].[Specialty Key], [tblSpecialty].[Specialty]" _
  & "FROM tblSpecialty WHERE [tblSpecialty].[Directorate] = " _
  & Me.ComboDirectorate
Me.ComboSpecialty.Requery
End Sub

这似乎对列出的专业没有任何影响。

我已经尝试按照

输入“ ”
WHERE Directorate = '" & Nz(Me.ComboDirectorate) & "' " & _

但它仍然没有根据理事会 selected.

列出专业

我知道组合框会损坏,我必须创建新的组合框。但是,首先检查是否正确设置了每个组合框的 BoundColumn 和 ColumnCount 属性。

确保 ComboDirectorate 的值与保存到 tblSpecialty 中的值相同 - 我假设是数字 PK/FK。

我会将 ComboSpecialty RowSource 设置为:
SELECT [Specialty Key], Specialty FROM tblSpecialty WHERE Directorate = [ComboDirectorate];

然后我会把代码放在 ComboSpecialty GotFocus 事件中。

Sub ComboSpecialty_GotFocus()
Me.ComboSpecialty.Requery
End Sub

请注意,带有查找别名的级联组合框在连续或数据表形式中效果不佳。

建议在命名约定中不要使用空格或 punctuation/special 个字符(下划线除外)。

根据 June7 的回答,我编写了以下代码:

Private Sub ComboSpecialty_GotFocus()
  If IsNull(Me.ComboDirectorate) Then
     Me.ComboSpecialty.RowSource = "SELECT [Specialty Key], Specialty FROM tblSpecialty"
 ElseIf Not IsNull(Me.ComboDirectorate) Then
     Me.ComboSpecialty.RowSource = "SELECT [Specialty Key], Specialty FROM tblSpecialty WHERE Directorate = [ComboDirectorate]"
 End If

Me.ComboSpecialty.Requery
End Sub

如果用户没有select 第一个组合框 (ComboDirectorate) 中的值,则所有值都显示在第二个组合框 (ComboSpecialty) 中。如果在第一个框中输入了一个值 select,则第二个组合框中仅显示相关值。