我正在尝试防止数据中的循环(甚至是级联)引用,并且看来这只是时间的一部分。

在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]) 这可以消除错误。因此,我的解决方案只是我发现的原始答案的一个很小的变化,但是它会遇到错误,如果您想...

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top