【问题标题】:How do I remove list items from a dropdown based on another dropdowns selection in the current form如何根据当前表单中的另一个下拉列表选择从下拉列表中删除列表项
【发布时间】:2014-01-12 00:04:33
【问题描述】:

我的“添加医师”表单中有 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 Change、AfterUpdate 和 LostFocus 事件以及 cboDepartment Change 事件上进行了尝试,虽然我没有收到任何错误消息,但它实际上并没有删除两个列表项“Neurology”和“物理医学与康复”从部门下拉列表。我做错了什么或错过了什么?

如果大学下拉菜单中的选择发生更改,我也不知道如何重置它?

非常感谢!

【问题讨论】:

标签: ms-access vba


【解决方案1】:

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

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

【讨论】:

  • 如果我这样做会消除我已有的数据吗?我有一个广泛的数据库,其中包含许多已经选择了他们的大学和部门的条目,因此填充了下拉列表。
  • 组合框通常是一个未绑定的控件,即使表单可能基于记录集。 VBA 代码使用条目,而不是底层记录集。因此数据不受影响。
  • 好的,所以我使用了这段代码,但它不起作用;这里是逐字代码: Private Sub cboUniversity_AfterUpdate() If cboUniversity = "University of Alberta" Then cboDepartment.RowSourceType = "Value List" cboDepartment.RowSource = "[Family Medicine];[Medicine];[Neurosurgery];[Pediatrics]" Me.cboDepartment.Requery End If End Sub
【解决方案2】:

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

  1. 您可以将其基于值列表,并对列表进行修订。
  2. 也许在这种情况下更有用的是,您可以将 #2 组合框基于 查询并过滤其结果(或以其他方式修改查询)。

这两种解决方案都比RemoveItem 更有意义(我不确定它是否存在,真的……听起来像是DOM 操纵的东西)。

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

【讨论】:

  • 所以我遇到了问题,因为下拉列表没有使用表格填充,我只是输入了下拉列表的项目。很抱歉问了这么多问题,我只是对链接上的代码如何为我消除这两个值感到困惑。
猜你喜欢
  • 2017-01-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-02
  • 2014-08-28
  • 1970-01-01
相关资源
最近更新 更多