2012-05-04 2 views
1

Я видел различные сообщения здесь о том, что вы не используете поиск в таблице. Если вы этого не сделаете, как вы обеспечиваете ссылочную целостность между полем и допустимыми значениями из таблицы поиска? Я не могу создать связь между полем таблицы и поле в таблице поиска, потому что я не могу создать уникальный индекс (без дубликатов) в поле - конкретное значение должно появляться несколько раз по всем записям в таблице. Но если я использую свойства поля для установки на него поиска и укажите поле из таблицы поиска, которое оно должно содержать, то это гарантирует, что данные не могут быть введены в это поле, которое не находится в таблице поиска.Доступность ссылочной целостности Access 2007 без использования поиска в таблице

Или у меня есть совершенно неправильный конец палки здесь?

ответ

1

Я рекомендую вам всегда создавать формы для редактирования записей. И в этих формах вы можете создавать комбинированные поля, которые выполняют поиск в правильной таблице и поле. Там есть опции, позволяющие ограничить ввод данных только теми значениями, которые хранятся в таблице. Этот параметр называется Limit To List (вы увидите его в свойствах combo).

Другим важным способом обеспечения соблюдения этих данных в вашей таблице поиска является использование ваших отношений.

tblProducts 
    ProductID (primary key) 
    CategoryID (foreign key) 
    ProductDescription 

tblCategories 
    CategoryID (primary key) 
    Category 

В окне отношений вы должны определить взаимосвязь между двумя приведенными выше таблицами в поле CategoryID. Вы выполняете несколько вещей здесь. Более эффективно хранить только CategoryID в вашей таблице продуктов, так как вы будете хранить меньше данных. Кроме того, таким образом, если вы измените имя в категории, все записи отражают это изменение немедленно. В каждом месте, где вы показываете продукт с его категорией, вам нужно создать поле со списком, чтобы вы отображали описание категории, а не отображали CategoryID.

В качестве побочного примечания я рекомендую вам редко использовать параметр списка значений в качестве типа источника строки в комбо. Использование параметра Table/Query, а затем создание соответствующей таблицы поиска - это гораздо более надежный и гибкий дизайн.

+0

Спасибо, но я упомянул, что я не могу создать отношения, поскольку поле не уникально. Пока пользователи формы будут ограничены элементами списков, это относится только к данным, введенным через форму. Прежде чем он попадет к пользователю, мне нужно загрузить данные из разных источников, и если ограничение не находится в поле в таблице, а не только в элементе управления формой, тогда могут быть сохранены некорректные данные. – Chelle

+0

Вы, безусловно, можете создать отношения без уникального поля. Первичные ключи/индексы - единственные вещи, которые обеспечивают уникальность. – HK1

+0

Хорошо, когда я попытался получить сообщение об ошибке, что связь не может быть создана, потому что в поле в первичной таблице не было уникального индекса на нем – Chelle

 Смежные вопросы

  • Нет связанных вопросов^_^