Автоматическое создание столбцов в таблице Microsoft Access - PullRequest
0 голосов
/ 25 мая 2020

Как мы можем автоматически генерировать столбцы / поля в таблице доступа Microsoft?

Сценарий ...... У меня есть таблица с личными данными моего сотрудника (EmployDetails). Я хочу поместить их ежедневную посещаемость в другую таблицу. Вместо того, чтобы использовать отдельные записи для повседневной работы, я хочу использовать одну запись для найма .. Например: я хочу создать таблицу с полями, как показано ниже EmployID, 01Jan2020, 02Jan2020, 03Jan2020, ......... 25May2020 и так далее ....... Это означает, что каждый день я должен автоматически создавать столбец ... Кто-нибудь может мне помочь?

1 Ответ

1 голос
/ 25 мая 2020

Как правило, вы определяете столбцы вручную (будь то через пользовательский интерфейс или SQL).

С предоставленной информацией, я думаю, правильным решением будет иметь две таблицы.

Вы иметь ваши "EmployDetails", в которые вы бы поместили их общую информацию (имя, контактную информацию и т. д. c), и ключ, который будет идентификатором сотрудника (уникальный, может быть создан автоматически или вручную, просто должен быть уникальным)

У вас будет вторая таблица с внешним ключом для идентификатора сотрудника в «EmployDetails» со столбцом с именем Date и другой вызываемой информацией (или тем, что вы пытаетесь зафиксировать в своей идее столбца даты).

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

Таблица сотрудников:

EmpID |  NAME  | CONTACT
----------------------
 1    |  Jim   | 222-2222
 2    |  Jan   | 555-5555

Подробная таблица:

DetailID | EmpID (foreign key) | Date     | Hours_worked | Notes
-------------------------------------------------------------
10231    | 1                   | 01Jan2020| 5            | Lazy Jim took off early
10233    | 2                   | 02Jan2020| 8            | Jan is a hard worker
10240    | 1                   | 02Jan2020| 7.5          | Finally he stays a full day

Кому найти, что работал Джим, вы выполняете соединение:

SELECT Employee.EmpID, Employee.Name, Details.Date, Details.Hours_worked, Details.Notes
FROM Employee
JOIN Details ON Employee.EmpID=Details.EmpID;

Конечно, это даст вам нормализованный результат (который обычно является тем, что нужно, чтобы вы могли его перебирать):

EmpID |  NAME  | Date      | Hours_worked | Notes
-----------------------------------------------
1     | Jim    | 01Jan2020 | 5            | ......
1     | Jim    | 02Jan2020 | 7            | .......

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

См. подробнее о создании внешних ключей

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