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

Combobox 级联组合框不更新第二个框选项,combobox,ms-access-2010,Combobox,Ms Access 2010,我正在使用MS Access 2010存储在我们医院进行的审计记录。我正在尝试创建一个表单,它将根据选择的下拉选项过滤审计 我希望专业组合框从董事会层叠而来,因此,如果我选择家庭和公共卫生董事会,只有该董事会内的专业才会出现在下面的组合框中 我的ComboDirector行源是从tblDirectorate中选择[tblDirectorate].[Director Key],[tblDirectorate].[Director] 我的ComboSpeciality行源是SELECT TBLSSp

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

我希望专业组合框从董事会层叠而来,因此,如果我选择家庭和公共卫生董事会,只有该董事会内的专业才会出现在下面的组合框中

我的ComboDirector行源是从tblDirectorate中选择[tblDirectorate].[Director Key],[tblDirectorate].[Director]

我的ComboSpeciality行源是SELECT TBLSSpecialty。[专业键],TBLSSpecialty.Specialty FROM TBLSSpecialty

然后,我更新了ComboDirection的代码:

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
这似乎对列出的专业没有任何影响

我试着按照


但它仍然没有根据所选董事会列出专业。

我知道combobox已经损坏,我不得不创建新的combobox。但是,首先检查每个组合框的BoundColumn和ColumnCount属性是否设置正确

确保ComboDirector的值与保存到TBLSSpecialty中的值相同-我假设数值为PK/FK

我会将ComboSource设置为: 选择[Speciality Key],从TBLSSpecialty中选择Speciality,其中董事会=[ComboDirector]

然后我会把代码放在ComboFocus事件中

Sub ComboSpecialty_GotFocus()
Me.ComboSpecialty.Requery
End Sub
请注意,带有查找别名的级联组合框在连续或数据表形式下无法正常工作


建议不使用空格或标点符号/特殊字符下划线命名约定中唯一的例外。

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

确保ComboDirector的值与保存到TBLSSpecialty中的值相同-我假设数值为PK/FK

我会将ComboSource设置为: 选择[Speciality Key],从TBLSSpecialty中选择Speciality,其中董事会=[ComboDirector]

然后我会把代码放在ComboFocus事件中

Sub ComboSpecialty_GotFocus()
Me.ComboSpecialty.Requery
End Sub
请注意,带有查找别名的级联组合框在连续或数据表形式下无法正常工作


建议在命名约定中不要用空格或标点符号/特殊字符下划线,只有例外情况。

使用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

如果用户没有从第一个组合框ComboDirector中选择值,则所有值都显示在第二个组合框ComboDirector中。如果在第一个框中选择了一个值,则在第二个组合框中仅显示相关值。

使用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

如果用户没有从第一个组合框ComboDirector中选择值,则所有值都显示在第二个组合框ComboDirector中。如果在第一个框中选择了一个值,则在第二个组合框中仅显示相关值。

谢谢您的帮助。是否有办法调整它,以便在未选择董事会时,列出所有专业?目前,按照您的建议设置ComboSpeciality RowSource,如果我没有选择一个项目,专业框中不会显示任何内容。我在想,如果有人不知道该专业所在的董事会,但知道该专业。可能是一些类似于私有子组合专业的代码。\u单击dedirectory=Then Me.comboSpeciality.RowSource=SELECT tblsspecialty。[专业键],tblSpecialty.Specialty FROM tblSpecialty ElseIf Directority然后Me.ComboSpeciality.RowSource=选择[Speciality Key],Specialty FROM tblSpecialty其中Directority=[ComboDirectority]End如果End Sub要允许记录而不包含Directority?是的,如果符合您的需要,请使用代码设置RowSource。谢谢您的帮助。是否有办法调整它,以便在未选择董事会时,列出所有专业?目前,按照您的建议设置ComboSpeciality RowSource,如果我没有选择一个项目,专业框中不会显示任何内容。我在想,如果有人不知道该专业所在的董事会,但知道该专业。可能是一些类似于私有子组合专业的代码。\u单击dedirectory=Then Me.comboSpeciality.RowSource=SELECT tblsspecialty。[专业键],tblSpecialty.Specialty FROM tblSpecialty ElseIf Directority然后Me.ComboSpeciality.RowSource=选择[Speciality Key],Specialty FROM tblSpecialty其中Directority=[ComboDirectority]End如果End Sub要允许记录而不包含Directority?是的,如果符合您的需要,请使用代码设置行源代码。