MS Access: многотабличная форма, в которой одна из таблиц вызывается дважды - PullRequest
1 голос
/ 08 июля 2020

У меня следующая проблема:

Я хочу создать базу данных документов. Каждый документ связан с двумя сотрудниками (один из них подготовил do c, другой проверил и утвердил его), поэтому у меня есть две простые таблицы: Documents и Employees. Таблица документов содержит два поля, связанных с идентификатором сотрудника: PreparerID и CheckerID.

Когда я пытаюсь связать обе таблицы в одну связь, Access заявляет, что не может гарантировать ссылочную целостность: Шаг 1

Итак, я поместил еще один экземпляр той же таблицы: Шаг 2

Теперь я хочу создать форму, в которой пользователь может установить составителя и утверждающего для каждого документа: в построителе запросов я вижу это, поэтому мне нужно повторить процедуру из построителя отношений: Шаг 3 Шаг 4

Наконец, в форме я установил оба поля для выбора сотрудника на ComboBox и установил источник строки на Employee.EmpName. Шаг 5

Но форма работает не так, как задумано. Когда я меняю какого-то утверждающего, это также меняется во всех документах, где он был составителем. Очевидно, я пытаюсь решить эту проблему неправильно. Не могли бы вы мне помочь, как это сделать правильно?

Спасибо!

1 Ответ

0 голосов
/ 08 июля 2020

Поле со списком привязано к неправильному полю. Выбор изменяет значение EmpName в записи таблицы Employees, а не сохраняет значение в записи таблицы Documents.

Не включать таблицу Employees в форму RecordSource. Просто выполните привязку к таблице документов.

Установите свойства combobox:

ControlSource: поле таблицы документов - PreparerID или CheckerID RowSource: SELECT ID, EmpName FROM Employees ORDER BY EmpName; BoundColumn: 1 ColumnCount: 2 ColumnWidths: 0 "; 2"

Части имени действительно должны быть в отдельных полях, чтобы облегчить поиск и сортировку по фамилии: FName, LName. Таким образом, поле со списком RowSource может быть: SELECT ID, LName & ", " & FName AS FullName FROM Employees ORDER BY LName, FName;

...