У вас не так много отличных вариантов.
Вы, конечно, не можете удалить такие записи, поскольку, как вы указываете, такие исторические данные будут повреждены.
Я могу придумать несколько предложений.
Сначала добавьте «активный» столбец персонала к отображению поля со списком. Затем, если пользователь изменяет или выбирает из поля со списком, вы можете предотвратить (или предупредить), что он выбирает несуществующего сотрудника. Это отобразит неактивный персонал, но теоретически позволит пользователям выбирать неактивный персонал - возможно, вы этого не захотите. (но вы можете предупредить или предотвратить в элементе управления перед обновлением, если хотите предотвратить это).
Другой способ - динамическая загрузка поля со списком на основе текущей записи. Другими словами, если форма, скажем, находится в «режиме добавления» или поле со списком пусто, вы загружаете поле со списком с помощью оператора выбора, который включает только StaffActive = True.
Вышеупомянутое может работать довольно хорошо, если вы ограничите свою «основную» форму одной записью (я обычно так и поступаю). Я обычно представляю форму поиска, а ЗАТЕМ всегда запускаю основную форму для ОДНОЙ записи.
Таким образом, в событиях загрузки форм вы можете проверить, установлен ли идентификатор столбца персонала, и, если он не активен, вы загружаете поле со списком со всеми сотрудниками.
Если в столбце есть активный член персонала, то в форме при загрузке вы устанавливаете sql поля со списком только для активных членов.
Этот подход «сложен», если вы разрешаете навигацию по записям. В этом случае вы должны поместить тестирование в текущее событие и установить таким образом sql поля со списком. Будем надеяться, что таблица со списком сотрудников «маленькая».
Третий способ заполнить поле со списком - использовать обратные вызовы. Это МАЛЕНЬКИЙ известный подход, и снова с текущим событием вы можете проверить, является ли идентификатор неактивным, и, таким образом, установить vatriable (вероятно, глобальный), который позволяет коду обратного вызова включать неактивный персонал.
Однако, если вы сохранили «id» в столбце записи о персонале, которой больше не существует, то вы мало что можете сделать. (Возможно, я попытаюсь повторно ввести удаленный персонал с правильными идентификаторами).
Так что неясно, удалена ли запись о персонале или у вас есть какой-то «активный» флаг. Если у вас есть активный флаг, вы можете «протестировать», является ли «id» персонала из поля со списком неактивным персоналом, а затем вставить правильный sql в источник данных поля со списком, который включает неактивный персонал.
Я полагаю, что из соображений производительности и некоторого уменьшения «мерцания» я бы, возможно, установил / отслеживал, что отображается в текущем поле со списком, и ТОЛЬКО обновлял поле со списком, если требуются статусные (неактивные) члены.
person
Albert D. Kallal
schedule
04.01.2019