【问题标题】:how to populate a table of lookups using "Not in list"如何使用“不在列表中”填充查找表
【发布时间】:2018-08-22 15:44:29
【问题描述】:

表1:我的一般信息表

  • 组织:默认为“N/A”但从...中提取值的查找/关系字段。

表 2:组织列表

  • 没有 ID 字段,只有按添加顺序排列的组织名称

我的数据输入表单有一个用于组织的组合框,我希望在添加以前未添加的组织时更新它。我知道我应该使用“不在列表中”事件,但我不知道如何使用此事件更新组织列表。我该怎么做?

【问题讨论】:

    标签: database ms-access vba ms-access-2016 ms-access-forms


    【解决方案1】:

    确保组合框的Limit To List 属性设置为Yes

    添加On Not In List 事件以在出现新值时将值插入源表:

    Private Sub MyComboBox_NotInList(NewData As String, Response As Integer)
    
        With DoCmd
            .SetWarnings False
            .RunSQL "INSERT INTO [Organization List](Organizations) VALUES ('" & NewData & "')"
            Response = acDataErrAdded
            .SetWarnings True
        End With
    
    End Sub
    

    编辑……差点忘了……在我回答之前,你试过什么? :)

    编辑 2... 给出的示例是一个字符串值。如果 New Data 是数值,则从 New Data 的任一侧删除 '(但如果它是组织名称,则可能不是)。

    编辑 3...INSERT SQL 只是将数据放入表中的一种方式。您可能更喜欢RecordSet.Add.Update 方法。

    【讨论】:

    • 感谢您回答我的问题。至于您的问题:我尝试设置一组输入的值并在每次显示“此值不在列表中,您要更新列表项吗?”时更新列表。我对访问或 VBA 不是很好,因为我刚开始使用它们我也尝试了你的代码,它似乎并没有改变组织列表。我当前的表将“N/A”作为其唯一值(因为它是默认值)。输入“test”后,表中的唯一值是“N/A”
    • 我想首先要检查的是代码是否实际执行 - 通过单击您正在中断的代码行左侧的边框(一个点)在代码中放置一个断点应该出现在边框中,代码行突出显示)。如果代码触发,它将在该行暂停 - 按 F8 逐行浏览代码。将光标悬停在 NewData 变量上 - 它是否显示您输入的值?
    • 我有断点时是否应该出现带有代码的窗口?添加唯一值时,代码窗口不出现
    • 我犯了一个错误。我忘记将列表限制更改为“是”。之后,代码在“.SetWarnings False”处中断,这可能是什么问题?我确实在 .RunSQL "INSERT INTO [Organization list](Organizations) VALUES ('" & NewData & "')" 处设置了断点,错误框显示 "Run-time error '424': Object required
    • 天哪,我把“Do”拼成了“Co”。该值现在确实显示在表中。谢谢
    猜你喜欢
    • 2012-08-16
    • 1970-01-01
    • 1970-01-01
    • 2019-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-06
    相关资源
    最近更新 更多