Вопрос

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

В доступе 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]) И это работало, чтобы изгнать ошибку. Таким образом, мое решение является лишь небольшим вариантом оригинального ответа, который я нашел, но оно опускается по ошибке и позволит вам сохранить нули, если вы хотите ...

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top