如何使用“不在列表中”填充查找表
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”。该值现在确实显示在表中。谢谢以上是关于如何使用“不在列表中”填充查找表的主要内容,如果未能解决你的问题,请参考以下文章