如果用户需要向现有选项添加新选项,如何在access中创建一个组合框,该组合框可以转换为文本框以启用写入



我想知道如何在一个表单中定义一个组合框,用户可以从现有列表中选择一个选项,如果找不到所需的选项;添加新选项";可以访问哪个将组合框转换为用于编写新选项的文本框?

您可以在组合框旁边放一个按钮,用于当组合框"不在列表中"事件被点击时触发的"添加选项",然后该按钮将调用弹出窗体,或者在您的建议中,更改允许输入的重叠文本框的可见性。然而,我建议使用弹出式表单,因为这样你就可以验证输入的长度、内容等,然后一旦填写了表单或文本框,退出文本框或提交表单就会保存到你的表中进行下拉,刷新组合框源查询,并分配值。我在VBA中做这件事,还有很多弹出窗口。

对不起我英语不好:-(

您可以直接使用";关于"不在列表中";事件看看下面的例子https://learn.microsoft.com/en-us/office/vba/api/Access.ComboBox.NotInList

这是一个场景:一个叫做cb的组合框和一个叫做tb的文本框。tb的可见属性为false。组合框和文本框具有相同的数据源。当您键入一个不在组合框列表中的值时,该值将转到文本框;编辑完文本框后,它将再次隐藏。

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

最新更新