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

时间:2017-05-24 13:00:55

标签: combobox ms-access-2010

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

我希望专业组合框从Directorate级联,所以如果我选择“家庭和公共卫生”理事会,只有该理事会内的专业出现在下面的组合框中。

我的ComboDirectorate行来源是SELECT [tblDirectorate]。[董事会密钥],[tblDirectorate]。[董事会] 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

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

我已尝试根据Can't get the cascading combo boxes to work

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

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

2 个答案:

答案 0 :(得分:0)

我知道组合框已损坏,我不得不创建新的组合框。但是,首先检查每个组合框的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

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

在命名约定中不建议使用空格或标点符号/特殊字符(仅限下划线异常)。

答案 1 :(得分:0)

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

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