1

我在 MS Access 2007 中实现了邻接列表树。在插入或更新时,我想验证循环引用(如a->b->c->a)。我编写了一个简单的函数,如果引用的路径是有限的,则给定表名和树节点的 id 返回 true,如果存在循环,则返回 false。

不幸的是,根据http://msdn.microsoft.com/en-us/library/office/aa191586(v=office.10).aspx

对于字段和记录验证规则,表达式不能包含用户定义的函数、域聚合或聚合函数、Eval 函数或 CurrentUser 方法,或对表单、查询或表的引用。此外,字段验证规则不能包含对其他字段的引用。对于记录,表达式可以包含对该表中字段的引用。

我仅限于使用 Access 数据库引擎作为后端的 MS Access。我知道邻接列表树模型的局限性,但我仍然更喜欢它。

验证这些参考的最佳方法是什么?

4

1 回答 1

1

您无需将其放入验证规则中。您要做的是在插入/更新时捕获内容,但您可能应该在插入或更新之前捕获它们。

为此,请让您自己的验证在输入控件的 BeforeUpdate 事件中运行您的函数,并在函数显示存在问题时运行 Me.Undo 和 Msgbox(或以其他方式通知用户错误)。

例如:

Private Sub Input_BeforeUpdate(Cancel As Integer)
    If Not inputIsValid() Then
        'input is not valid
        Me.Undo
        MsgBox "Input is not valid", vbOKOnly + vbCritical, "Invalid Input"
    End If
End Sub
于 2013-12-28T05:17:16.823 回答