在Combo_beforeupdate取消后,“没有当前记录”
-
29-09-2019 - |
题
我正在尝试防止数据中的循环(甚至是级联)引用,并且看来这只是时间的一部分。
在Access 2007中,我有下表:
create table mfr (
mfr_id Autonumber,
mfr_nm Text(255),
mfr_is_alias_for_id Long Integer
)
我正在从Excel导入一堆数据,MFR_NM是工作表中的列之一。我无法控制如何将数据输入Excel,因此我想要一种捕获替代拼写为“真的”的方法。到目前为止,一切都很好(我认为...)。
现在,我已经建立了这张桌子的表格。我有一个别名的组合 - 到目前为止,一切都很好。但是,当我将此代码添加到pertupdate事件中时,事情会变得“有趣”(错误处理省略):
If Not IsNull(cboMfrAlias) Then
If Not IsNull(DLookup("mfr_is_alias_for_id", "mfr", "mfr_id=" & cboMfrAlias)) Then
MsgBox """Alias for"" must not also be an alias.", vbExclamation
Cancel = True
End If
End If
这完全按照我的期望,表单视图中的表单视图,但是如果我在datasheet视图中 不是 通过在Update子内进行错误处理而捕获。
我可以抓住这个错误吗?在哪里?
解决方案
您的下拉列表应过滤出一个别名的条目。换句话说,不要显示用户无法做出的选择。
您可以通过简单地从下拉列表中消除MFR_IS_ALIAS_FOR_ID的选择来做到这一点。
我已经以各种形式实现了这一点,并且效果很好。
其他提示
我很早就解决了您问题的“无当前记录”错误部分。在检查Google以找到答案之后,我发现了这个 关联 这很有帮助。但是,我没有使用NZ()在总查询中转换麻烦的二进制字段,而是使用 troublesomefield: IIF([troublesomefield] IS NULL,NULL,[troublesomefield])
这可以消除错误。因此,我的解决方案只是我发现的原始答案的一个很小的变化,但是它会遇到错误,如果您想...
不隶属于 StackOverflow