У меня есть форма доступа MS, которая имеет поля из двух реляционных таблиц. Упрощенное представление моей базы данных - A(Date, ActivityID)
и B(ActivityID, ActivityName)
. Затем в форме есть только два механизма ввода: один для ввода даты, а другой для ввода имени действия. Входным объектом для ActivityName является комбинированный список с RowSource как "Select B.ActivityName from B"
, и элементы не ограничены списком. Это позволит пользователю создавать новые ActivityNames по мере необходимости, но также выбирать из уже встречающихся ActivityNames.
При тестировании функционал для создания новых типов ActivityNames работает нормально - он создает новое ActivityName и связывает его с новым идентификатором, дополнительно он заполняет A.ActivityID
этим новым идентификатором. Однако, когда я go выбираю элемент из выпадающего списка уже обнаруженных ActivityNames, Access создает новую запись с тем же ActivityName и новым идентификатором, а не выбирает уже созданный записать и использовать это значение идентификатора.
Например, скажем, у меня есть следующие данные для B {(1, Run), (2, Jump)}
. Тогда в форме параметры раскрывающегося списка для ActivityName будут {Run, Jump}
. Однако, когда я выбираю «Run
», тогда данные для B
становятся {(1, Run), (2, Jump), (3, Run)}
, когда я хотел извлечь значение идентификатора 1.
Я попытался установить для поля ActivityName значение Unique, чтобы принудительно применить уникальность (которая, как я думал, может заставить двигатель использовать уже созданные значения), однако это не поощряет доступ к поисковым значениям из таблицы - скорее, это дает мне ошибку, говоря, что
"такое и такое изменение приведет к дублированию значений в индексе ".