如果用户需要向现有选项添加新选项,如何在访问中创建一个组合框,该组合框可以转换为文本框以启用书写?
Posted
技术标签:
【中文标题】如果用户需要向现有选项添加新选项,如何在访问中创建一个组合框,该组合框可以转换为文本框以启用书写?【英文标题】:how to create a combo box in access which can be converted to text box to enable writing if the user needs to add a new option to the existings? 【发布时间】:2021-07-16 19:51:40 【问题描述】:我想知道如何在用户可以从现有列表中选择一个选项的表单中定义一个组合框,如果他找不到所需的选项,可以访问“添加新选项”将组合框转换为用于编写新选项的文本框?
【问题讨论】:
【参考方案1】:您可以在组合旁边放置一个按钮,用于“添加选项”,当组合“不在列表中”事件被点击时触发 - 然后该按钮将调用弹出表单 - 或者在您的建议中,更改允许输入的覆盖文本框的可见性。但是,我建议使用弹出表单,因为这样您就可以验证输入的长度、内容等 - 然后在填写表单或文本框后 - 退出文本框,或提交表单将保存到您的表格中下拉,刷新组合框源查询,并赋值。我在 VBA 中经常使用弹出窗口来执行此操作。
【讨论】:
【参考方案2】:对不起我的英语不好:-(
您可以直接使用“On Not in List”事件。看例子 https://docs.microsoft.com/en-us/office/vba/api/Access.ComboBox.NotInList
这是场景:一个名为 cb 的组合框和一个名为 tb 的文本框。 tb 的可见属性为假。 Combobox 和 Textbox 具有相同的数据源。当您键入不在组合框列表中的值时,该值将转到文本框;当您完成编辑文本框时,它会再次隐藏。
Private Sub cb_NotInList(NewData As String, Response As Integer)
' Suppress error message and undo changes.
Response = acDataErrContinue
Me!cb.Undo
' Prompt user to verify they wish to add new value.
If MsgBox("Value is not in list. Add it?", vbOKCancel) = vbOK Then
Me!tb.Visible = True
Me!tb.Value = NewData
Me!tb.SetFocus
End If
End Sub
Private Sub tb_AfterUpdate()
' Hide again texbox
Me!tb.Visible = False
' Update combobox items
Me!cb.Requery
End Sub
【讨论】:
以上是关于如果用户需要向现有选项添加新选项,如何在访问中创建一个组合框,该组合框可以转换为文本框以启用书写?的主要内容,如果未能解决你的问题,请参考以下文章
使用 Graph 创建私有通道后,需要几分钟才能使用选项卡端点