Заполнение записи внешнего ключа MS Access выполняется слишком быстро - PullRequest
0 голосов
/ 11 июня 2018

У меня проблема с одной из моих форм в базе данных MS Access, и, как ни странно, это единственная форма, которая имеет эту проблему.

Форма имеет типичную структуру Master / Detail с подчиненной формойстол.Источник записи подчиненной формы включает в себя внешний ключ, который извлекает информацию из другой таблицы и заполняет остальные поля на основе значения ключа.Этот внешний ключ является номером материала, который определяет конкретный объект в инвентаре, а другие поля в подчиненной форме показывают детали этого объекта.

Пример из таблицы знаков:

Номер материала: 116063175

Ящик для хранения: A116

Описание материала: Стоп

Размеры: 48x48

Вся эта информация содержится в одной таблице, но формадля таблицы, которая используется для заполнения знаков на конкретной дороге (остановки, ограничения скорости и т.остальные формы будут заполнены автоматически.Этот процесс работает и здесь, но по какой-то причине Access хочет попытаться заполнить оставшиеся данные поля, прежде чем я закончу набирать номер материала.Я введу «1», и access выдаст ошибку, из-за которой не может найти соответствующую запись в таблице Signs в таблице внешнего ключа.После двухкратного отклонения ошибки ввод данных может возобновиться как обычно, что также странно.

Надеюсь, я достаточно ясно сказал, что я впервые задаю вопрос здесь.

Заранее спасибо!

Редактировать: Попытка восстановления формы, та же проблема.Построил другую похожую форму, но без моих множественных списков, не было проблемы!Может ли это быть связано с базовым кодом запроса в событии Afterupdate моих списков?У меня есть каскадная настройка комбинированного списка в форме, может ли ввод данных вызывать запрос?

Edit2: на данный момент я использую исправление для определения номера и количества материала (два важных полядля этой формы) в текстовые поля вне подчиненной формы, которые пользователь может отредактировать, а затем поместить в подчиненную форму нажатием кнопки, которая закодирована следующим образом:

Private Sub Command1_Click()
If Me!PrimaryRoadInventorySubform.Form.Dirty Then
        Me!PrimaryRoadInventorySubform.Form.Dirty = False
End If
Me!PrimaryRoadInventorySubform.SetFocus
DoCmd.GoToRecord , , acNewRec
Me!PrimaryRoadInventorySubform.Form!MaterialNumber = MaterialNumtxt
Me!PrimaryRoadInventorySubform.Form!Quantity = Quantitytxt
End Sub
...