«Нет текущей записи» после отмены в combo_BeforeUpdate - PullRequest
1 голос
/ 06 ноября 2010

Я пытаюсь предотвратить циклические (или даже каскадные) ссылки в моих данных, и кажется, что это работает только часть времени.

В 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.

Могу ли я поймать эту ошибку? Где?

Ответы [ 2 ]

2 голосов
/ 06 ноября 2010

Ваш выпадающий список должен отфильтровать записи, которые являются псевдонимами.Другими словами, не отображать выбор, который пользователь не может сделать.

Вы бы сделали это, просто исключив из раскрывающегося списка варианты, в которых mfr_is_alias_for_id не является нулевым.

Я реализовал это в разных ипостасях, и он отлично работает.

0 голосов
/ 04 ноября 2014

Я обращаюсь к ошибке "Нет текущей записи" в вашем вопросе, сделанном так давно.После проверки Google на ответ, я нашел эту ссылку , которая была полезна.Однако вместо того, чтобы использовать NZ () для преобразования проблемного двоичного поля в агрегированном запросе, я использовал troublesomefield: IIF([troublesomefield] IS NULL,NULL,[troublesomefield]), и это помогло устранить ошибку.Таким образом, мое решение - это лишь небольшая вариация исходного ответа, который я нашел, но оно позволяет обойти ошибку и позволяет вам сохранять пустые значения, если вы хотите ...

...