Как отобразить все данные в поле (выпадающий список) в форме, если источник строки в поле со списком не включает это значение - PullRequest
0 голосов
/ 04 января 2019

Данные, ранее введенные в поле, не отображаются, если поле в форме представляет собой элемент управления со списком

Имеет форму, отображающую информацию о событии.Оно включает в себя имя сотрудника, который изначально его установил.Источник строк поля со списком для этого элемента управления - это список только текущих сотрудников.Если исходный сотрудник, который настроил событие, ушел (то есть не является текущим), элемент управления показывает пустое, когда форма открыта для этой записи.

Я хочу знать, как отобразить исторические (то есть любые / все данные)но если пользователь хочет что-либо изменить, он получает только текущий (т. е. обновленный) список, доступный для него.

Элемент управления сохраняет идентификатор персонала, в поле со списком отображается имя персонала (связанное с таблицей персонала.попытайтесь изменить параметры, которые, как он говорит, я не могу, поскольку связанный столбец скрыт.

1 Ответ

0 голосов
/ 04 января 2019

У вас нет большого выбора здесь.

Вы, конечно, не можете удалить такие записи, поскольку, как вы указали, такие исторические данные, таким образом, будут повреждены.

ЕстьНесколько предложений, которые я могу придумать.

Прежде всего, добавьте столбец «активный» персонал на дисплей поля со списком.Затем, если пользователь меняет или выбирает из поля со списком, вы можете предотвратить (или предупредить), что они выбирают несуществующего сотрудника.Это будет отображать неактивных сотрудников, но теоретически позволит пользователям выбирать неактивных сотрудников - вы можете этого не хотеть.(но вы можете предупредить или запретить в элементе управления перед обновлением, если хотите предотвратить это).

Другой способ - динамическая загрузка поля со списком на основе текущей записи.Другими словами, если форма находится, скажем, в «режиме добавления» или поле со списком пустое, вы загружаете поле со списком с оператором выбора, который включает только StaffActive = True.

Выше может работатьдовольно хорошо, если вы ограничите свою «основную» форму одной записью (я склонен это делать).Я обычно представляю форму поиска, и ТОГДА всегда запускаю основную форму в ОДНОЙ записи.

Таким образом, в событии загрузки форм вы можете проверить, установлен ли идентификатор столбца персонала, и если он не активен, затем вы загружаете поле со списком со всеми сотрудниками.

Если в столбце есть активный член, то в форме при загрузке вы устанавливаете sql поля со списком только для активных членов.

Этот подход сложен, если вы разрешаете навигацию по записям.В этом случае вы должны поместить тестирование в текущее событие и таким образом установить sql поля со списком.Надеюсь, таблица со списком сотрудников будет «маленькой».

Третий способ заполнить поле со списком - использовать обратные вызовы.Это малоизвестный подход, и снова с текущим событием вы можете проверить, является ли идентификатор неактивным, и, таким образом, установить vatriable (вероятно, глобальный), который позволяет коду обратного вызова включать неактивный персонал.

Однако, если вы сохранили «id» в этом столбце записи о персонале, которая больше не существует, вы ничего не сможете сделать.(Возможно, я бы попытался повторно ввести удаленный персонал с правильными идентификаторами).

Таким образом, неясно, удалена ли запись персонала, или у вас есть какой-то «активный» флаг.Если у вас есть активный флаг, то вы можете «проверить», является ли «идентификатор персонала» из поля со списком неактивным персоналом, а затем вставить правильный sql в источник данных поля со списком, который включает неактивный персонал.

Полагаю, по соображениям производительности и некоторого уменьшения «мерцания», я бы, возможно, установил / отследил, что отображает текущее поле со списком, и ТОЛЬКО обновил бы поле со списком, если требуются члены статуса (неактивные).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...