访问级联组合框自动填充当留下一个选项时

Posted

技术标签:

【中文标题】访问级联组合框自动填充当留下一个选项时【英文标题】:Access cascading combobox autofill When left with one option 【发布时间】:2017-09-12 19:43:55 【问题描述】:

如果只剩下一个选项,我想在表单上自动填充大约 50 个级联组合框。我发现了一些适用于 cboTwo(第二个组合框)的代码,但其他组合框不会自动填充。我仍然必须使用下拉菜单进行选择。如果下拉菜单中只剩下一个选项,有什么方法可以让我的所有组合框自动填充?我更喜欢某种宏帮助,因为这是我迄今为止一直在使用的,但如果有必要我会使用 VBA。感谢您的所有帮助!

Private Sub cboOne_AfterUpdate()

Me.cboTwo.Requery
If Me.cboTwo.ListCount = 1 Then
With Me.cboTwo
cboTwo.SetFocus
cboTwo.Value = cboTwo.ItemData(0)
End With
End If
End Sub

Private Sub cboTwo_AfterUpdate()

Me.cboThree.Requery
If Me.cboThree.ListCount = 1 Then
With Me.cboThree
cboThree.SetFocus
cboThree.Value = cboThree.ItemData(0)
End With
End If

End Sub

【问题讨论】:

“不工作”不是问题。 具体问题是什么?你试过调试吗?断点?检查当地人? 请原谅,我是 VBA 的绝对初学者,没有正确用词。第二个组合框将自动填充最后一个可用选项。我输入相同代码的其余组合框不会自动填充。我仍然必须使用下拉菜单进行选择。我没有尝试过您上面列出的故障排除步骤,因为我不知道它们的含义。不过,我会尽力解决这些问题并回复您。 请edit您的问题包括此(和任何其他相关)信息。 @CBeachBum 您不需要成为专家级的编码员,但如果有人询问更多信息,最好的办法实际上是编辑问题并及时添加更多细节。如果您愿意花时间改进自己的帖子,Stack Overflow 是一个很好的资源。速度通常也更快......如果不是同一小时,大多数问题都会在同一天回答。如果你“回来”的时间太长,问题很可能会停滞不前。 @CPerkins 谢谢你的建议。我在工作中使用它并且还有其他任务要完成。因此,我无法立即做出反应。不过,我感谢大家的帮助。 【参考方案1】:

问题可能在于对访问控制事件的误解。与许多其他语言不同,控制事件很少由 VBA 代码中的更改触发。也就是说,在代码中执行cboTwo.Value = cboTwo.ItemData(0)时不会自动调用事件处理程序cboTwo_AfterUpdate(),因此不会有任何自动事件级联。尝试以下模式:

Private Sub cboOne_AfterUpdate()
  Me.cboTwo.Requery
  If Me.cboTwo.ListCount = 1 Then
    With Me.cboTwo
      cboTwo.SetFocus
      cboTwo.Value = cboTwo.ItemData(0)
      cboTwo_AfterUpdate
    End With
  End If
End Sub

Private Sub cboTwo_AfterUpdate()
  Me.cboThree.Requery
  If Me.cboThree.ListCount = 1 Then
    With Me.cboThree
      cboThree.SetFocus
      cboThree.Value = cboThree.ItemData(0)
      cboThree_AfterUpdate
    End With
  End If    
End Sub

【讨论】:

建议的代码对我不起作用。我真的根本不懂VBA编码。到目前为止,我一直在对所有内容使用宏。我很抱歉浪费了你的时间。我只是对此感到沮丧,需要考虑另一种方法。 ComboBox.RowSource 查询可能还不够,但您尚未分享有关这些的任何详细信息。我只能假设在每个 ComboBox 上调用 Requery 都会起作用。请使用几个组合框的 RowSource 查询编辑您的问题(不在 cmets 中)。您的担忧可能不仅与 VBA 编码有关,而且我猜可能与 Access 事件模型有关。它并不总是直观或像其他系统一样,这就是为什么我在我的代码答案之前加上一个简短的评论。

以上是关于访问级联组合框自动填充当留下一个选项时的主要内容,如果未能解决你的问题,请参考以下文章

选择组合框时填充文本框

自动填充组合框 ExtJS

组合框级联效应不适用于不同的行

WPF,MVVM从字典中填充级联组合框

阻止 Chrome 显示自动填充选项

在下一个记录条目的下拉列表中自动填充组合框