Ms access MS access将项目添加到组合框(如果不在列表中)

Ms access MS access将项目添加到组合框(如果不在列表中),ms-access,combobox,Ms Access,Combobox,我有一个访问表单,我想知道如果组合框中没有项目,如何在组合框中添加项目。 我的组合框处于值模式。您需要将属性limit to list设置为true 然后在On Not in List事件中添加一些代码,这些代码可能会将值添加到组合框中。或者您可以查看其他答案 请注意,通常最好使用存储组合框值的表。对于值列表,除非禁用快捷菜单,否则用户可以右键单击组合框,选择编辑列表项…,并修改列表,即使将其设置为“限制为列表…”。。。这有效地克服了您试图对字段设置的任何限制。不幸的是,如果不将表单更改为设计模

我有一个访问表单,我想知道如果组合框中没有项目,如何在组合框中添加项目。
我的组合框处于值模式。

您需要将属性
limit to list
设置为true

然后在On Not in List事件中添加一些代码,这些代码可能会将值添加到组合框中。或者您可以查看其他答案


请注意,通常最好使用存储组合框值的表。对于值列表,除非禁用快捷菜单,否则用户可以右键单击组合框,选择
编辑列表项…
,并修改列表,即使将其设置为“限制为列表…”。。。这有效地克服了您试图对字段设置的任何限制。

不幸的是,如果不将表单更改为设计模式并添加新值,您无法永久更改行源。使用代码可以做到这一点,但当人们工作时,这不是一个好主意。最简单的方法是创建一个小表并向其中添加值。当您关闭表单时,新值将被保存

艾伦·布朗(Allen Browne)描述了如何做到这一点:

这是他展示的想法之一:

Private Sub CategoryID_NotInList(NewData As String, Response As Integer)
    Dim strTmp As String

    'Get confirmation that this is not just a spelling error.
    strTmp = "Add '" & NewData & "' as a new product category?"
    If MsgBox(strTmp, vbYesNo + vbDefaultButton2 + vbQuestion, "Not in list") = vbYes Then

        'Append the NewData as a record in the Categories table.
        strTmp = "INSERT INTO Categories ( CategoryName ) " & _
            "SELECT """ & NewData & """ AS CategoryName;"
        DBEngine(0)(0).Execute strTmp, dbFailOnError

        'Notify Access about the new record, so it requeries the combo.
        Response = acDataErrAdded
    End If
End Sub