【发布时间】:2017-08-10 12:41:34
【问题描述】:
当输入的项目不在列表中时,我正在尝试向 ComboxBox 源添加记录。
代码正确创建记录,然后返回 Response = acDataErrAdded 但仍显示错误 Item not in list。如果我随后手动向下滚动列表,新的用户记录就在那里!
tblUsers
ID(自动编号)、用户代码(文本)、用户名(文本)
1,ID00001,“汤姆·琼斯”
2,ID00007,“弗雷德·史密斯”
cmbUsers
RowSource = 从 tblUsers 中选择用户代码、用户名、ID
绑定列 = 3
列数 = 3
列宽 = "2cm;4cm;2cm"
输入掩码“ID00000;;_”
Private Sub cmbUsers_NotInList(NewData as string, Response as integer)
dim sUserCode as string
sUserCode = "ID" & NewData ' Doesn't have the "ID" ?!?!?
if ActiveDirectoryUserIDExists(sUserCode) then
AddNewUserFromActiveDirectory sUserCode
Response = acDataErrAdded
exit sub
end if
Response = acDataErrDisplay
End Sub
当输入 NotInList 时,NewData 的值为 00001,并且不以输入掩码“ID”为前缀。
所以我怀疑当 NotInList 子返回时,Access 正在使用未以“ID”开头的 NewData 值,因此永远找不到该值是重新查询的列表!
我尝试在退出前将 NewData 值设置为“ID”和 NewData,但这不起作用。
所以我真的不确定!
关于如何让它发挥作用的任何想法?
【问题讨论】:
-
好的。我暂时删除了输入掩码,然后它就可以工作了!所以我的怀疑是正确的。我无法删除输入掩码,如何修复 NotInList 事件?
-
不幸的是,您无法在组合框上调用重新查询。这会导致异常。