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 に答える