如何根据当前表单中的其他下拉列表选项从下拉列表中删除列表项

时间:2013-12-23 18:28:01

标签: access-vba

我的“添加医生”表格中有2个下拉菜单。一个是选择大学,另一个是选择部门。我想让部门(有6个列表项目)列表项目根据选择的大学(有2个列表项目)而变化。如果用户选择其他大学,我还希望选择重置部门下拉菜单。

如果选择阿尔伯塔大学,我想从部门下拉中删除“神经病学”和“物理医学与康复”。

这是我到目前为止的编码:

Private Sub cboUniversity_AfterUpdate()
On Error GoTo err_trap

If Me.cboUniversity = "University of Alberta" Then
    Me.cboDepartment.RemoveItem "Neurology"
    Me.cboDepartment.RemoveItem "Physical Medicine & Rehabilitation"
End If

err_trap_exit:
    Exit Sub

err_trap:
    MsgBox "The following error has occurred: " & Err.Number & " - " & Err.Description     & " - University - After Update"
    Resume err_trap_exit

End Sub

我已经尝试过在cboUniversity变化,更新后,和LostFocus事件以及对cboDepartment更改事件,虽然我没有得到任何错误信息实际上并没有删除这两个列表项“神经病学”和“物理医学与康复“来自部门下拉列表。我做错了什么或错过了什么?

如果大学下拉列表中的选择被更改,我也不知道如何重置它?

非常感谢!

2 个答案:

答案 0 :(得分:0)

如果您的cboUniversity_AfterUpdate过程,而不是从cboDepartment中删除项目,请相应地更改cboDepartment的rowsource - 例如

Private Sub cboUniversity_AfterUpdate()
    if cboUniversity = "University of Alberta" then
        cboDepartment.RowSource = ... 'New ValueList, or New SQL which omits the unwanted departments
    else
        cboDepartment.RowSource = ...
    end if
end sub

答案 1 :(得分:0)

有两种方法可以填充#2组合框。

  1. 您可以将其基于值列表,并对列表进行修订。
  2. 在这种情况下,或许更有用的是,你可以打开#2组合框 查询并过滤其结果(或以其他方式修改查询)。
  3. 任何一个解决方案都比RemoveItem更有意义(我不确定存在,真的......听起来像是来自DOM操作的东西)。

    说明可能有所帮助:access.mvps.org/access/forms/frm0028.htm