MS Access Table Design для сотрудников с различными требованиями к обучению - PullRequest
1 голос
/ 01 апреля 2012

Пожалуйста, помогите мне с концептуальной проблемой, которую я пытался выяснить последние 3 дня.Я пытаюсь использовать Access для централизации отслеживания обучения, которое ранее проводилось в отдельных таблицах Excel.У меня около ~ 340 сотрудников, которые разбиты на 12 различных должностей с различной степенью необходимой подготовки.У меня есть пример ниже:

Позиция 1: Класс A, Класс B, Класс C Позиция 2: Класс A, Класс B Позиция 3: Класс A Позиция 4: Класс A

Как видите, все 340 сотрудников требуют обучения класса А.Но только для некоторых должностей требуется класс B или даже класс C. Сейчас у меня есть одна таблица с именами лиц и соответствующей контактной информацией, а также все 12 возможных классов.Все, что я хочу получить, это сохранить дату окончания обучения, и ничего больше.Проблема, с которой я сталкиваюсь, заключается в том, что поле «Дата / Время» не может различить того, кто должен принять этот класс и просто еще не сделал этого (нулевое значение), и того, кто не обязан брать этот класси, очевидно, еще не завершил его (также нулевое значение).

То, что я пробовал:

- запрос с использованием вычисляемых полей, которые будут вводиться в значение «НЕ REQ», еслиДолжность не требует обучения.Ниже приведен пример: Инспектор HAZMAT: IIf ([POSITION] = «Планировщик загрузки», [Инспектор HAZ], «НЕ REQ») Почему это не работает: вставка текста в поле изменяет его сдата в текстовое поле, поэтому я больше не могу использовать функции даты, чтобы определить, истек ли срок обучения.Кроме того, я не могу отредактировать поле в форме и сохранить его обратно в исходную таблицу, поскольку оно является вычисляемым полем.
Возможное решение (?): Используйте оператор SQL Update в VBA, чтобы записать значение вычисляемого полявернуться в исходный стол?Я все еще сталкиваюсь с проблемой, что я не могу обновить поле для начала в форме ...

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

- Отдельные таблицы для каждого класса (?): я вижу, насколько безопаснее будет этот маршрут, но для негочтобы быть полезным, я бы подумал, что мне придется написать какой-нибудь код VBA, в котором говорится, что когда я назначаю кого-либо на должность X, его идентификатор сотрудника автоматически заполняется в таблицах A, B и C на основе требований к его обучению.Это выполнимо?Это лучший вариант или я просто не в курсе?

1 Ответ

0 голосов
/ 01 апреля 2012

Как вы уже объяснили, вы не можете делать записи в вычисляемом поле.Вам понадобится другой подход.Подход зависит от того, отображаете ли вы только одного сотрудника на форму (Single Form) или если вы отображаете список сотрудников (Continuous Form или Datasheet).

На Single Form я бы просто отключилполя, которые не применяются

me!txtClassBDate.Enabled = me!txtPosition = 2

Вы можете вызвать этот код из Form_Current и, возможно, из AfterUpdate элемента управления, используемого для изменения типа позиции.


Другая возможность заключается в использовании условного форматирования.Выберите дату - TextBox;затем откройте меню «Формат»> «Условное форматирование ...» (я не знаю, где это находится на лентах Acc 2007+).Здесь вы можете определить внешний вид элемента управления в зависимости от оценки выражения.Вы также можете установить элемент управления в отключенном состоянии.

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