如何使用“不在列表中”填充查找表

Posted

技术标签:

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

表1:我的一般信息表

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

表 2:组织列表

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

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

【问题讨论】:

【参考方案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”。该值现在确实显示在表中。谢谢

以上是关于如何使用“不在列表中”填充查找表的主要内容,如果未能解决你的问题,请参考以下文章

使用 4 mb 查找不在 40 亿列表中的整数。但是4 MB是不够的[重复]

MongoDB:如何使用查找查询填充嵌套对象?

如何使用数据透视查找填充列最多的记录?

如何根据列和行中提供的条件查找表格单元格值?

如果不在列表中,则 MS 访问将项目添加到组合框

通过 Visual Studio dbproj 脚本查找表填充——最佳实践?