Я пытаюсь предотвратить циклические (или даже каскадные) ссылки в моих данных, и кажется, что это работает только часть времени.
В Access 2007 у меня есть следующая таблица:
create table mfr (
mfr_id Autonumber,
mfr_nm Text(255),
mfr_is_alias_for_id Long Integer
)
Я импортирую кучу данных из Excel, и mfr_nm является одним из столбцов на листе. Я не могу контролировать, как данные вводятся в 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 сразу же следует сгенерированная Access ошибка «Нет текущей записи», которая не обнаружен обработчиком ошибок в подпрограмме BeforeUpdate.
Могу ли я поймать эту ошибку? Где?