データ内の循環(またはカスケード)参照を防止しようとしていますが、それは時間の一部でしか機能していないようです。
Access 2007には、次の表があります。
create table mfr (
mfr_id Autonumber,
mfr_nm Text(255),
mfr_is_alias_for_id Long Integer
)
Excelから大量のデータをインポートしていますが、mfr_nmはワークシートの列の1つです。データがExcelに入力される方法を制御できないので、「本当に」同じものとして代替スペルをキャプチャする方法が必要です。これまでのところ、とても良いです(私は思います...)。
これで、このテーブルからフォームを作成しました。エイリアス用のComboBoxがあります。これも、これまでのところ、非常に優れています。ただし、このコードをBeforeUpdateイベントに追加すると、「興味深い」ものになります(エラー処理は省略されます)。
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
これは、フォームがフォームビューにある場合に期待するとおりに機能しますが、データセットビューにいる場合、MsgBoxの直後に、BeforeUpdate内のエラー処理ではキャッチされないAccess生成の「現在のレコードがありません」エラーが発生します。サブ。
このエラーをキャッチできますか?どこ?