«Нет текущей записи» после отмены в Combo_beforeUpdate
-
29-09-2019 - |
Вопрос
Я пытаюсь предотвратить циркулярные (или даже каскадные) ссылки в мои данные, и кажется, что это только работает только время.
В доступе 2007 у меня есть следующая таблица:
create table mfr (
mfr_id Autonumber,
mfr_nm Text(255),
mfr_is_alias_for_id Long Integer
)
Я импортирую кучу данных из Excel, а MFR_NM является одним из столбцов из рабочего листа. Я не могу контролировать, как данные попадают в Excel, поэтому я хочу, чтобы способ захватить альтернативные правописания как «действительно» же. До сих пор так хорошо (я думаю ...).
Теперь я построил форму от этой таблицы. У меня есть Combobox для псевдонима - опять же, пока так хорошо. Однако, когда я добавляю этот код в событие FOREUPDATE, вещи получают «интересную» (обработка ошибок опущена):
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 сразу же сопровождается сгенерированной доступом «Нет ошибки текущей записи», которая нет поймал по обработке ошибок в подпункте Fronupdate.
Могу ли я поймать эту ошибку? Где?
Решение
Ваш выпадающий список должен отфильтровать записи, которые являются псевдонимами. Другими словами, не отображайте выбор, который пользователь не может сделать.
Вы сделаете это, просто удалив из раскрывающегося выбора вариантов, где MFR_IS_ALIAS_FOR_ID не нуль.
Я реализовал это в различных областях, и это работает нормально.
Другие советы
Я обращаюсь к ошибке «Нет текущей записи», часть вашего вопроса, от до тех пор давно. После проверки Google за ответ, я нашел это связь что было полезно. Однако вместо использования NZ () для преобразования неприятного двоичного поля в совокупном запросе я использовал troublesomefield: IIF([troublesomefield] IS NULL,NULL,[troublesomefield])
И это работало, чтобы изгнать ошибку. Таким образом, мое решение является лишь небольшим вариантом оригинального ответа, который я нашел, но оно опускается по ошибке и позволит вам сохранить нули, если вы хотите ...