Access 従業員マスタ「編集」フォーム
従業員マスタ「編集」フォームの作成
デザインビュー
「F01従業員新規」フォームをコピペしてフォーム名を「F01従業員編集」とした。
コピペ後のカスタマイズ
- 「名字」と「名前」コントロールを一つにして「氏名」とした
- 「ミョウジ」と「ナマエ」コントロールを一つにして「フリガナ」とした
- 「氏名」と「雇用区分」から下のコントロールを下に移動する
- できたスペースに「選択」名でオプショングループを設置
- さらに「検索」名でコンボボックスを設置
- 「旧住所として保存」ボタンを住所付近に設置
- 「退職日」の下に「勤続年数」コントロールを設置
「勤続年数」を計算するための「勤続月」コントロールを「入社日」の横に設置 - 「登録」ボタンを「訂正更新」に変更
プロパティシート→すべて→名前 「登録」から「訂正更新」に変更
プロパティシート→すべて→標題 「登録」から「訂正更新」に変更
●「氏名」コントロールの設定
「氏名」が半角カタカナで入力された際に半角に統一したい
マクロの作成
「01従業員」マクロに「氏名」名でサブマクロを作成(保存する)
サブマクロ:氏名 | ||
値の代入 | ||
アイテム= | [氏名] | |
式= | StrConv([氏名].8) | |
マクロの中止 |
マクロの簡単解説
もし「氏名」に全角カタカナが入力された際に半角カタカナに変換される
マクロを設置
・作成したマクロは上書き保存する
・プロパティシート→イベント→更新後処理→マクロ「01従業員.氏名」
ふりがな入力支援を設定
プロパティシート→ふりがな→ふりがなウィザードを使って設定する
●「フリガナ」コントロールの設定
「フリガナ」に全角カタカナで入力された際に半角カタカナに統一したい
マクロの作成
「01従業員」マクロに「フリガナ」名でサブマクロを作成(保存する)
サブマクロ:フリガナ | ||
値の代入 | ||
アイテム= | [フリガナ] | |
式= | StrConv([フリガナ].8) | |
マクロの中止 |
マクロの簡単解説
もし「フリガナ」に全角カタカナが入力された際に半角カタカナに変換される
マクロを設置
・作成したマクロは上書き保存する
・プロパティシート→イベント→更新後処理→マクロ「01従業員.フリガナ」
●「選択」オプショングループの設定
オプショングループの設置
フォームデザイン→リボンよりオプショングループをクリック→フォームデザインの詳細部にオプショングループを設置
オプショングループウィザードで「既存従業員」と「退職者」グループを作成する→規定値を1とする(既存従業員)
他のコントロールにあわせて幅・高さなどの書式を整える
機能
「従業員検索」コントロールと連動して選択されたグループで「検索」コンボボックスに表示されるリストが決まる
●「検索」コンボボックスの設定
コンボボックスの設置
フォームデザイン→リボンよりコンボボックスをクリック→フォームデザインの詳細部にコンボボックスを設置
コンボボックスウィザードが立ち上がるがキャンセルで閉じる→コンボボックスのプロパティを設定する
プロパティシート→データ→値集合ソース→・・・ボタンをクリックしてクエリビルダーを立ち上げる
→テーブルの追加から「01従業員M」を追加→フィールドリストから「フリガナ」「氏名」「略称」「従業員コード」をデザイングリッドに追加する
「選択」オプショングループに連動したクエリにする設定
デザイングリッドに「選択」フィールドを追加して抽出条件を設定する
フィールド: | 選択: IIf(IsNull([退職日]),1,2) |
抽出条件: | [Forms]![F01従業員編集]![選択] |
簡単解説
「退職日」が空欄ということは「既存従業員」となる。「退職日」に日付が入っていれば「退職者」となる。
フィールドの名前を「選択」としてIf文を作成。もし「退職日」が空欄なら1を返して、空欄じゃなければ2を返す。
フォーム「F01従業員編集」の「選択」コントロールで選択された数値が抽出条件になる。
→クエリビルダーを閉じる(保存する)
コンボボックスのプロパティを設定
デフォルトから変更するプロパティ
簡単解説 | ||
列数 | 4 | 「フリガナ」「氏名」「略称」「従業員コード」の4列を表示させる |
列幅 | 4cm;4cm;2cm;0cm | 各々列幅を;で区切って指定する |
リスト幅 | 10cm | リストの合計幅を4+4+2=10の10cmにする |
連結列 | 4 | 「検索」コンボボックスには4列目の「従業員コード」が格納される |
その他、幅・高さなどの書式を整える
検索結果をフォームに表示させるマクロの作成
「01従業員」マクロに「編集表示」名でサブマクロを作成
サブマクロ:編集表示 | ||
値の代入 | ||
アイテム= | [Forms]![F01従業員編集]![従業員コード] | |
式= | [Forms]![F01従業員編集]![検索] | |
値の代入 | ||
アイテム= | [Forms]![F01従業員編集]![氏名] | |
式= | DLookUp(“氏名“,”01従業員M”,”[従業員コード]=[Forms]![F01従業員編集]![従業員コード] “) | |
値の代入 | ||
アイテム= | [Forms]![F01従業員編集]![フリガナ] | |
式= | DLookUp(“フリガナ“,”01従業員M”,”[従業員コード]=[Forms]![F01従業員編集]![従業員コード] “) | |
<途中省略> 「値の代入」をコピペして青色マーカー部分を該当コントロール名に書き換える | ||
値の代入 | ||
アイテム= | [Forms]![F01従業員編集]![雇用区分] | |
式= | DLookUp(“雇用区分”,”01従業員M”,”[従業員コード]=[Forms]![F01従業員編集]![従業員コード] “) | |
マクロの中止 | ||
サブマクロの最後 |
マクロの簡単解説
「検索」コンボボックスで「従業員コード」が指定されると1行目の値の代入で編集フォーム上の「従業員コード」に転記される。2行目以降の値の代入にはDLookUp関数を使ってフォーム上の「従業員コード」に合致するコントロールを「01従業員M」テーブルから参照して表示させる。表示させるコントロール分値の代入を追加する。
マクロの設置
・作成したマクロは上書き保存する
・プロパティシート→イベント→更新後の処理→マクロ「01従業員.従業員表示」
●「旧住所として保存」ボタンの設定
引っ越しなどで住所変更があった際に旧住所として履歴を残しておく機能
マクロの作成
「01従業員」マクロに「旧住所」名でサブマクロを作成(保存する)
サブマクロ:旧住所 | ||
値の代入 | ||
アイテム= | [旧住所] | |
式= | [旧住所] & [郵便番号] & ” ” & [都道府県] & [住所1] & [住所2] & ” ” & Date() & ” “ | |
マクロの中止 |
マクロの簡単解説
旧住所履歴なので2回3回と引っ越ししても履歴として残るようにしたい。
住所は郵便番号、都道府県、住所とわかれているが「旧住所」に残す際はわける必要がないので合体させて登録する。
旧住所として登録した日付を記録しておく。
式=の簡単解説
[旧住所] & [郵便番号] & ” ” & [都道府県] & [住所1] & [住所2] & ” ” & Date() & ” “
「旧住所」にあるデータはそのままで+「郵便番号」+半角スペース+「都道府県」+「住所1」+「住所2」を合体させて+半角スペース+今日の日付+半角スペース(半角スペースは見た目の整えと最後の半角スペースは次の旧住所登録時の見栄えのため)
マクロの設置
・作成したマクロは上書き保存する
・プロパティーシート→イベント→クリック時→マクロ「01従業員.旧住所」
●「勤続年数」コントロールの設定
入社日から起算して勤続年数を計算する
「勤務月」コントロールの作成
「勤続年数」を計算するためにサブ的に必要な値を計算する
「入社日」から「今日」まで何ヶ月経っているか計算するコントロールを作成する
フォームデザイン→テキストボックスの作成→詳細部分にテキストボックスを設置する(名前を「勤続月」とした)
プロパティシート→データ→コントロールソースに式を入力する
コントロールソース:=IIf([入社日] Is Null,””,IIf([退職日] Is Null,DateDiff(“m”,[入社日],Date())+1,DateDiff(“m”,[入社日],[退職日])+1))
式の簡単解説
もし「入社日」が空欄なら空欄を表示。もし「退職日」が空欄なら「入社日」から「今日」まで何ヶ月か計算する。「退職日」が入力済なら「入社日」から「退職日」まで何ヶ月か計算する。「入社日」と「退職日」は1ヶ月在職と見なして+1とする
その他のプロパティ設定
・プロパティシート→書式→可視→いいえ (フォームで表示しなくていいコントロール)
「勤続年数」コントールの作成
「勤務月」の値と連動して「勤続年数」を計算する
フォームデザイン→テキストボックスの作成→詳細部分にテキストボックスを設置する(名前を「勤続年数」とした)
プロパティシート→データ→コントロールソースに式を入力する
コントロールソース:=IIf([入社日] Is Null,””,[勤続月]\12 & “年” & [勤続月] Mod 12 & “カ月”)
式の簡単解説
もし「入社日」が空欄なら空欄を表示。「勤続月」コントロールの値を12で割って整数部分を取り出す(演算子[\])+テキスト”年”。12で割った割り算の答えの余りを求める(演算子[Mod 12])+テキスト”カ月”。
その他プロパティ設定
・プロパティシート→データ→使用可能→いいえ
・プロパティシート→データ→編集ロック→はい
・プロパティシート→書式→背景色→背景 1, 暗め 15%
・プロパティシート→その他→タブストップ→いいえ
●「キャンセル」ボタンの設定
「F01従業員新規」フォームで作成した「キャンセル」ボタンのマクロをコピーして編集する
マクロの作成
「01従業員」マクロ→サブマクロ:「キャンセル」をコピーして同マクロ内にペーストする。
コピーしたサブマクロは「編集キャンセル」名とした
コピーしたマクロを編集
「値の代入」アクションで[名字] [名前] [ミョウジ] [ナマエ]は不要になるので削除する
新たにコントロールを追加
サブフォーム:編集キャンセル | ||
値の代入 | ||
アイテム= | [氏名] | |
式= | Null |
作成した値の代入を同じサブマクロ内でコピペして青色マーカー部分を変更して利用する
追加する 値の代入:[フリガナ] [検索] [従業員コード] [旧住所] [雇用区分]
マクロの設置
・作成したマクロは上書き保存する
・プロパティーシート→イベント→クリック時→マクロ「01従業員.キャンセル」
●「訂正更新」ボタンの設定
「F01従業員編集」フォームから「01従業員M」テーブルのデータを更新するクエリを作成する
「更新クエリ」の作成
クエリ名は「Q01従業員編集更新」にした
「F01従業員編集」フォームで変更したコントロールを含む全てのコントロールを「01従業員M」テーブルで更新する
更新クエリ作成手順
→「作成」クリック
→「クエリデザイン」クリック
→「テーブルの追加」クリック
→「01従業員M」を選択(ダブルクリック)
→「01従業員M」の全フィールドをデザイングリッドに追加させる
→リボンから「更新」をクリック(更新クエリモードになる)
→フィールド「従業員コード」に 抽出条件 を指定する
→[Forms]![F01従業員編集]![従業員コード]
→フィールド「ID」は不要なので列の削除する
→全てのフィールドに レコードの更新 を指定する
→(例)「氏名」フィールドには [Forms]![F01従業員編集]![氏名]
→同じように[氏名]部分を各フィールド名に変えて指定する
→クエリ名「Q01従業員編集更新」としてクエリを保存
「訂正更新」ボタンを押したときのマクロを作成
ボタンのアクション
・テーブルのデータを訂正更新する最終確認メッセージ(「はい」「いいえ」)
・「編集訂正更新」マクロの実行
マクロの作成
「01従業員」マクロ下に「編集訂正更新」サブマクロを作成する
「01従業員.編集訂正更新」マクロ
サブマクロ:編集訂正更新 | ||||
If MsgBox(“訂正・編集したデータを更新してもよろしいですか?”,4+32,”確認”)=6 | ||||
メッセージの設定 | ||||
メッセージ表示 | いいえ | |||
クエリを開く | ||||
クエリ名 | Q01従業員編集更新 | |||
ビュー | データシート | |||
データモード | 編集 | |||
メッセージボックス | ||||
メッセージ | 訂正・編集したデータを更新しました。 | |||
警告音 | はい | |||
メッセージの種類 | なし | |||
メッセージタイトル | 完了 | |||
マクロの実行 | ||||
マクロ名 | 01従業員.編集キャンセル | |||
実行回数 | ||||
繰り返し条件式 | ||||
マクロの中止 | ||||
Else | ||||
メッセージボックス | ||||
メッセージ | 中止しました | |||
警告音 | はい | |||
メッセージの種類 | なし | |||
メッセージタイトル | 中止 | |||
マクロの中止 | ||||
If文の最後 | ||||
サブマクロの最後 |
マクロの簡単解説
・メッセージボックスで訂正更新の可否を確認「はい」なら実行「いいえ」なら(Else)中止
・「メッセージの設定」アクションでクエリ実行時の「実行の可否」メッセージを表示させない
・「更新クエリ」の実行
・「データ更新完了」のメッセージ
・更新後は「編集キャンセル」マクロで全てのコントロールを空欄にしてアクションを終了