2013-11-26 3 views
0

У меня есть конкретный вопрос об использовании трех таблиц в базе данных. Таблица 1 называется Персонал и перечисляет имена сотрудников.MS Access Form and Tables

Таблицы 2 и 3 идентичны, просто перечисляя два разных типа сверхурочных (длинных и коротких), а также часы OT, даты OT и поля Assigned to/Picked, которые пусты.

Вот эта идея, я просто не знаю, как ее реализовать. Я хотел бы создать форму для людей, чтобы войти в их выбор OT, а затем автоматически перейти к следующему человеку в списке. Таким образом, Rich Riphon, в качестве примера, будет первым, щелкнул бы по ссылке, которую я бы послал, и форма откроется, показывая его имя, заполненное первой таблицей, и покажет два раскрывающихся меню, заполненных из Long OT и Short OT. Он выберет один из каждого (или None, который будет вариантом) и отправьте его.

Действие формы заключается в том, чтобы поместить свое имя в поле Assigned для выбранного OT и поместить поле Yes в поле Picked.

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

Любые предложения или комментарии или лучшие способы сделать это будут оценены.

+0

Это БД доступа, развернутая в сети, со ссылками, отправленными по электронной почте? Какая версия Access? – Smandoli

ответ

0

Во-первых, я не думаю, что доступ MS мог бы (легко) начать процесс, основанный на гиперссылке. Вы можете что-то сделать, передав имя макроса в командную строку cmd, но для его нормальной работы потребуется некоторое мастерство. Не могли бы вы создать форму входа, чтобы получить текущего пользователя? Если вы это сделаете, вам действительно не нужно отображать список персонала, просто отслеживайте, кто еще не ответил на запрос OT. По существу в этот момент все, что вам нужно в вашей форме, это список доступных OT и кнопка, которая создает назначение. Также может быть проще (и лучше спроектировать) иметь только одну таблицу для списков OT и добавить столбец для типа сверхурочной работы (длинный/короткий).

0

Что делать, если Шерил не является вторым человеком, чтобы получить форму? Ваша концепция выходит из окна.

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

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

  • UserID
  • FirstName
  • LastName
  • SecurityLevel
  • Адрес1
  • Адрес2
  • Город
  • государственный
  • Телефон
  • Etc ...(Независимо от того соответствующей информации относится к этому человеку)

Вашей OT таблица будет выглядеть следующим образом:

  • Идентификатор_пользователя
  • OTDate
  • OTHours
  • OTType
  • Etc ... (независимо от того, что относится к ОТ)

Затем вы присоединились бы к этим двум таблицам в полях UserID в обеих таблицах в любое время, когда вам нужно было написать запрос, чтобы сообщать часы OT или что-то еще.