従業員マスタの構築概要と設計図
本ページでは、システム全体の基盤となる「従業員マスタ」の構築手順と、各オブジェクトの設計情報を整理しています。
実務におけるデータ管理の正確性と、操作性の統一を両立させるため、以下の3つの要素(テーブル・クエリ・フォーム・マクロ)を連携させた構造をとっています。
-
データの保持(テーブル): 整合性を保つためのフィールド定義
-
データの加工(クエリ): 効率的な抽出と更新のためのロジック
-
操作画面(フォーム): 共通テンプレートに基づいた一画面設計
- 動作の制御(マクロ):標準機能による操作の自動化と連動
まずは全体像を把握し、各ステップの詳細解説へと進んでください。
「従業員マスタ」構築の全体像
従業員マスタは、単なる名簿ではなく、給与計算や権限管理の起点となる重要なデータです。本システムでは、以下のオブジェクトを組み合わせて構築します。
構成オブジェクト一覧
テーブル
| テーブル名 | 役割 |
| T01従業員M | 基本情報の保持 |
| T01従業員有休 | 有休日数と実績の保持 |
| T02従業員所属部署 | 所属工場、所属部署の分類 |
| T03欠勤 | 欠勤の保持 |
| T03備考 | 備考に登録されたデータの保持 |
クエリ
| クエリ名 | 役割 | 関連フォーム |
| Q01従業員編集更新 | 編集フォーム内で編集したデータを一括更新 | F01従業員編集 |
| Q01有休時間累積更新 | 有休取得による累積データの変更更新 | F01有休登録 |
| Q01有休登録削除更新 | フォーム上で計算した有休残数でT01従業員Mのデータを更新 | F01有休登録 |
| Q01有休登録従業員M更新 | 新規有休登録されたデータをT01従業員Mに格納更新 | F01有休登録 |
| Q01有休登録編集更新 | 編集フォームのデータでT01従業員有休を更新 | F01有休登録 |
| Q01有休登録編集従業員M更新 | 編集フォームのデータでT01従業員Mを更新 | F01有休登録 |
| Q01有休登録削除 | 有休取得が取り消された場合の保管データの削除 | F01有休登録 |
| Q01従業員リストサブ | 従業員マスタのトップ画面に表示されるリスト | F01従業員リスト・F01従業員リストサブ |
| Q01従業員在籍者 | 在籍者を抽出する | F01従業員リスト |
| Q01有休リストサブ | 有休登録時に表示される全従業員の有休取得状況比較リスト | F01有休登録・F01有休リストサブ |
| Q01有休重複チェック | 対象者が同日に有休取得できないようにチェックする | F01有休登録 |
| Q01有休対象者サブ | 有休登録フォームで対象者の取得状況を一覧表示 | F01有休登録・F01有休対象者サブ |
| Q01従業員新規追加 | 新規登録フォームで入力されたデータを一括でT01従業員Mに追加 | F01従業員新規 |
| Q01有休登録追加 | 新規登録フォームで入力されたデータを一括でT01従業員有休に追加 | F01有休登録 |
| Q01有休登録備考パート追加 | 雇用区分から備考欄に”欠勤”テキストを自動で追加 | F01有休登録 |
| Q01有休登録備考欠勤追加 | 雇用区分から備考欄に有休不足の場合に”有休不足欠勤”テキストを自動で追加 | F01有休登録 |
| Q01有休登録備考追加 | 雇用区分から備考欄に”有休休暇”テキストを自動で追加 | F01有休登録 |
フォーム
| フォーム名 | 役割 | 詳細リンク |
| F01従業員リスト | 従業員が一覧表示される親フォーム | |
| F01従業員リストサブ | 従業員が一覧表示される表形式のサブフォーム | |
| F01従業員新規 | 従業員を新規登録する単票フォーム | |
| F01従業員編集 | 登録されている従業員データを編集する単票フォーム | |
| F01有休登録 | 対象者の新規有休登録をする単票フォーム➀ | |
| F01有休対象者サブ | ➀に表示される対象者の年間取得履歴を表示するサブフォーム | |
| F01有休リストサブ | ➀に表示される対象者の所属部署での取得状況が確認できるサブフォーム | |
| F01有休登録編集 | 登録されている有休取得状況を編集する単票フォーム |
テーブル設計(データの保持)
- 初期段階ではざっくりテーブルのフィールドとデータ型を決める
- テキスト型のフィールドサイズは想定より多めに設定
- フォーム作成時にテーブルの設定がそのままフォームで設定されるので何となくは決めておく
⇒あとで変更できるので作成時はあまり悩まず決めている
T01従業員M のフィールド定義と型
基本情報を格納するテーブル作成の参考例
| フィールド名 | データ型 | フィールドサイズ | IME入力モード | その他 | フォームとの連携 |
| ID | オードナンバー型 | 長整数型 | 主キー | ||
| 従業員コード | 短いテキスト | 5 | オフ | IDからテキスト型へ変更 | |
| 氏名 | 短いテキスト | 50 | オン | ||
| フリガナ | 短いテキスト | 50 | 半角カタカナ | ||
| 略称 | 短いテキスト | 20 | オン | ||
| 役職 | 短いテキスト | 20 | オン | コンボボックス(値リスト) | |
| 携帯TEL | 短いテキスト | 20 | オフ | ||
| 自宅TEL | 短いテキスト | 20 | オフ | ||
| 性別 | 数値型 | 整数型 | オプショングループ | ||
| 緊急連絡先 | 短いテキスト | 30 | オン | ||
| 緊急連絡先TEL | 短いテキスト | 20 | オフ | ||
| 郵便番号 | 短いテキスト | 10 | オフ | 定型入力を設定 | |
| 都道府県 | 短いテキスト | 10 | オン | ||
| 住所1 | 短いテキスト | 50 | オン | ||
| 住所2 | 短いテキスト | 50 | オン | ||
| 保険証番号 | 短いテキスト | 20 | オフ | ||
| 備考 | 長いテキスト | オン | |||
| 入社日 | 日付/時刻型 | 日付(L) | オフ | 定型入力を設定 | |
| 退職日 | 日付/時刻型 | 日付(L) | オフ | 定型入力を設定 | |
| 所属部署 | 短いテキスト | 20 | オン | コンボボックス(値リスト) | |
| メールアドレス | 短いテキスト | 50 | 半角英数 | ||
| 生年月日 | 日付/時刻型 | 日付(L) | オフ | 定型入力を設定 | |
| ログインパスワード | 短いテキスト | 20 | オフ | ||
| 権限 | 数値型 | バイト型 | |||
| 血液型 | 短いテキスト | 10 | オフ | コンボボックス(値リスト) | |
| 旧住所 | 短いテキスト | 255 | オン | ||
| 雇用区分 | 短いテキスト | 20 | オン | コンボボックス(値リスト) |
T01従業員有休
有給休暇登録を詰め込むテーブル
従業員コードと取得日をキーにして必要なデータを取得する
※フィールド定義と型は割愛
T02従業員所属部署
T01従業員Mテーブルの所属部署フィールドと連動する
所属部署コードをキーとして格納しているフィールドデータを取得する
※フィールド定義と型は割愛
T03欠勤
欠勤登録を詰め込むテーブル
T01従業員Mテーブルの従業員コードフィールドと連動する
対象者コードをキーとして格納しているフィールドデータを取得する
※フィールド定義と型は割愛
T03備考
有休・欠勤がわかるように備考欄にテキストを詰め込むテーブル
T01従業員Mテーブルの従業員コードフィールドと連動する
従業員コードをキーとして格納しているフィールドデータを取得する
※フィールド定義と型は割愛
クエリ設計(データの加工)
本システムでは、フォームに直接テーブルを紐付けない「非連結方式」を採用しています。そのため、以下の役割を持つクエリを介してデータを処理します。
-
データの読み込み用: クエリにはフォームを参照した抽出条件からサブフォームに表示する形式の選択クエリ。
-
データの更新・追加用: フォームは非連結として入力した内容をテーブルへ安全に書き戻すための更新クエリ(または追加クエリ)。
詳細は、後述する「フォーム設計」の解説でフォームと連動した「クエリ設計」を紹介します。
フォームの設計(ユーザーインターフェース)
従業員マスタでは、システム全体の操作性を統一するため、先に定義した「フォームのテンプレート(ひな形)」に基づき構築します。
一画面で「検索・一覧表示」と「詳細入力」ができる構成をとり、ユーザーが直感的に操作できる画面を目指します。
F01従業員リスト
トップページ → 従業員マスタ → 追加パスワード
テンプレートからオブジェクトを配置した従業員マスタのメイン画面です。データの読み込みやボタン操作のロジックを管理します。
-
役割: 従業員とリスト表示してスクロールで対象者を選択します。また検索ボックスで対象者を抽出します。新規登録、編集画面へと展開します。
-
設計思想: リストから直接のデータ書き換えはできません。対象者を選択して登録、編集画面で操作します。フォームは非連結式で追加クエリ、更新クエリを使って書き換えます。
F01従業員新規
トップページ → 従業員マスタ → 追加パスワード → 新規登録
従業員リスト画面の下部に配置した 新規登録 ボタンから展開する新規登録画面です。
-
役割: 従業員マスタの登録ルールに基づき、登録ミスや未入力を防ぎながら新規登録します。
-
設計思想: 非連結フォームから登録ボタンから各コントロールの入力ルールチェックをして追加クエリでテーブルに追加されます。
F01従業員編集
トップページ → 従業員マスタ → 追加パスワード → 編集
従業員リスト画面の下部に配置した 編集 ボタンから対象者の登録情報を編集します。
-
役割: 対象者の登録情報の変更や書き換えを行います。
-
設計思想: 非連結フォームに対象者のデータを呼び出して訂正更新ボタンでテーブルに格納されているデータを更新クエリで書き換えます。
F01有休登録
トップページ → 有休・欠勤取得管理 → 登録
有休休暇の取得を管理するページ。対象者を呼び出して現状の有休取得状況を確認しながら登録します。
-
役割: 対象者の有休取得状況を確認しながら登録します。部署毎の有休取得状況も一覧で確認できます。
-
設計思想: 全体の有休取得状況を確認しつつ、対象者の累積を把握して適正をチェックする。非連結フォームで登録ボタンで追加クエリでテーブルに追加されます。
F01有休登録編集
トップページ → 有休・欠勤取得管理 → 対象者選択 → 年間対象者履歴リスト → 編集
対象者に登録されている有休取得データをリストに表示させて編集する。
-
役割: 対象者の有休が取りやめになった場合などに登録データを編集します。
-
設計思想: 非連結フォームに対象者のデータを呼び出して有休日数残などを自動計算して更新クエリで書き換えます。
マクロ設計(動作の制御)
本システムでは、複雑なVBAコードは使用せず、Access標準の「マクロ」機能のみで画面の動作を制御しています。
-
ボタンアクションの共通化: 「登録」「修正」「削除」などの基本操作をマクロで定義し、誰でもロジックが追えるシンプルな構成にしています。
-
非連結フォームとの連動: ボタンを押した際に「入力チェック」を行い、その後に「クエリ」を実行してデータを反映させる一連の流れをマクロで自動化しています。
具体的なマクロの組み方や設定値については、「フォーム設計」の各投稿ページ内で、動作とあわせて詳しく解説します。
[ tag id=”投稿ページへ移動するボタン(例:詳細な作り方はこちら)” ]
本サイトではマクロを用いた構築手順を中心に紹介していますが、決してマクロを唯一の正解として推奨しているわけではありません。VBAが扱える環境であれば、より多彩で柔軟なプログラムが組めるVBAでの構築をむしろ推奨したいと考えています。
ここでマクロという選択肢を提示しているのは、VBAにハードルを感じている方への「もう一つの入り口」として、また将来的な後継者への引き継ぎ負荷を抑えるという実務上のメリットを考慮してのことです。設計の考え方の一つとして、状況に合わせて活用してください。