注目キーワード
  1. AMP
  2. SEO
  3. PWA

Access 従業員マスタ「新規登録」フォーム

従業員マスタ新規登録

 

従業員マスタ「新規登録」フォーム作成

デザインビュー

  • 「新規登録」フォームは「テンプレポップアップ」フォームをコピーしてフォーム名を「F01従業員新規」とした。
  • ①「F01従業員新規」をデザインビューで開く。プロパティシート→データ→レコードソース→「01従業員M」を選択
  • 既存のフィールドを追加→全項目を選択→フォームデザインの詳細部分にドラッグアンドドロップする
  • ①で設定したレコードソース「01従業員M」を外して空欄にする
  • 新規フォーム作成時のマイルールに沿ってフォームの基本プロパティシートを整える(リンク)

●「氏名」コントロールの設定(コントロール名:名字と名前)

  • 登録時は 名字と名前にわけて登録→テーブルへの追加時に間に半角スペースを入れて一つにする
  • ふりなが支援を設定してフリガナに半角カタカナが自動入力されるようにする
    プロパティシート→その他→ふりがな→ふりがなウィザードを使って設定

●「フリガナ」コントロールの設定(コントロール名:ミョウジとナマエ)

半角カタカナに統一したいのでオペレーターによる打ち間違えを補正するマクロを組む

マクロの作成

「01従業員」マクロにサブマクロ名「フリガナ名字」を設置

サブマクロ:フリガナ名字
値の代入
アイテム= [ミョウジ]
式= StrConv([ミョウジ].16)
値の代入
アイテム= [ミョウジ]
式= StrConv([ミョウジ].8)
マクロの中止

マクロの簡単解説

フリガナ入力後に改行を押すと入力したテキストをカタカナに変換する。つづけて全角を半角に変換する。

同じく 「ナマエ」コントロールの更新後処理にも「01従業員.フリガナ名前」を作成して設置する。
上記、アイテム=[ミョウジ] を [ナマエ]に変えるだけ

マクロの設置

作成したマクロは上書き保存する
プロパティシート→イベント→更新後処理→マクロ「01重量員.フリガナ名字」

●「略称」コントロールの設定

略称がカタカナで入力された際に半角に統一したい。
カッコ(()半角()全角)で入力される場合も半角に統一したい。

マクロの作成

「01従業員」マクロにサブマクロ名「略称」を設置

サブマクロ:略称
値の代入
アイテム= [略称]
式= StrConv([ミョウジ].8)
マクロの中止

マクロの簡単解説

全角で入力されたカタカナや記号が半角に変換される

マクロの設置

プロパティシート→イベント→更新後処理→マクロ「01従業員.略称」を設置

●「郵便番号」コントロールの設定

プロパティシート→その他→住所入力支援 に住所入力支援ウィザードを設定する
今回の 住所の構成 は 都道府県と住所の2分割を採用しました(自動入力は 都道府県と住所1)

●「住所1」「住所2」「自宅TEL」「携帯TEL」「緊急連絡先」「緊急時連絡TEL」の設定

先に作成した サブマクロ「略称」をコピペ利用します

サブマクロ:略称
値の代入
アイテム= [略称]
式= StrConv([ミョウジ].8)
マクロの中止

手順

  1. 「01従業員」のマクロ内で「サブマクロ:略称」コピペしてサブマクロ名を 各コントロール名に変える
    (例)「サブマクロ:略称」→「サブマクロ:住所1」
  2. サブマクロ名を変更した各サブマクロの アイテム=[略称] を 各コントロール名に変えるだけ
    変更箇所:青色マーカー部分
  3. マクロの設置は「F01従業員新規」フォームの各コントロールにて
    プロパティシート→イベント→更新後処理→マクロ「01従業員.住所1」(例)を設置

●「住所1」コントロールの追加設定

住所入力支援 を使うことによって 都道府県を変えることは無いが 住所1 には番地などを追加入力する必要が生じます。住所1にそのままカーソルを進めるとカーソルは住所の左端で点滅します。入力は右端から始めるので 住所1 に移動した際にはカーソルを右端で待機する状態にしたい。

「01従業員.住所セル」マクロ

サブマクロ:住所1セル
IF IsNull([住所1]) Then
マクロの中止
Else
値の代入
アイテム= [住所1].[SelStart]
式= Len([住所1])
マクロの中止
If文の最後

マクロの簡単解説

もし「住所1」に何も入力されていなかったら「住所1」の右端にカーソルが移動するマクロを中止します。(何も入力されていないと右端にカーソル移動する命令がエラーになるためIf文で制御)入力されていたら「住所1」のカーソルのスタート位置を(SelStart)右端の移動させる。

マクロを設定していない状態

マクロを設置した状態

マクロの設置

作成したマクロは上書き保存する
プロパティシート→イベント→フォーカス取得時→マクロ「01従業員.住所セル」を設置

●「年齢」コントロールの設定

「生年月日」から年齢を計算する
プロパティシート→データ→コントロールソース
=IIf(Format(Date(),”mmdd”)<Format([生年月日],”mmdd”),DateDiff(“yyyy”,[生年月日],Date())-1,DateDiff(“yyyy”,[生年月日],Date()))

式の簡単解説

1月1日から起算して生年月日と本日を比較する。本日が生年月日より前なら-1(歳)にする。生年月日より後ならDateDiffの値にする。

●「性別」コントロールの設定

オプショングループ設置して1を男性、2を女性とした。テーブルには1か2として格納される。
規定値は設定せず、登録時に未選定ならエラーになるようにする

●「雇用区分」「所属部署」「役職」「血液型」コントロールの設定

コンボボックスを設置

プロパティシート→データ→値集合タイプ→値リストに設定
値集合ソースに各コントロールにあったメニューを登録する
(例)雇用区分コンボボックスには・・・値集合ソース→正社員;アルバイト・パート;契約社員;嘱託

カーソルが該当コントロールに来た際にコンボボックスが自動で開いて選びやすくする
プロパティシート→イベント→フォーカス取得時→ビルダーの選択からマクロビルダーを選択する
プルダウンメニューから「プロシージャの実行」→プロシージャ名に [雇用区分].Dropdown と入力して閉じる
※同じように[雇用区分]の箇所を各コンボボックスのコントロール名に変えて「フォーカス取得時」に設置する

性別のようにオプショングループから選ぶ方式にするのと迷うところだが今回は値リストから選ぶ方式にした。値リストはリスト以外のテキストも直接入力できることをメリットと考えて採用してみた。

●従業員コードの設定

従業員コードは登録順にオートナンバーで振られていくように設計している。
今回は従業員コードをテキスト型で登録したいのでいろいろ方法はあるが下記の方法をとった。

ID(数値型)= 従業員コード(テキスト型) ※同じ数字でもデータ型が違う

IDコントロールの主な設定

コントロールソース =DMax(“ID”,”01従業員M”)+1
使用可能 いいえ
編集ロック はい
可視 いいえ

従業員コードコントロールの主な設定

コントロールソース =Format([ID],”000″)
使用可能 いいえ
編集ロック はい

簡単解説

IDコントロールのコントロールソースには「01従業員M」テーブルの「ID」の最大数より1つ大きい数を取得する。従業員コードコントロールのコントロールソースには数値型のIDをテキスト型に変換して表示させる。編集できないように「編集ロック」は「はい」を設定。「ID]コントロールについては画面上表示させる必要がないので「可視」を「いいえ」に設定。

●「権限」コントロールの設定

規定値を1に設定。

●「キャンセル」ボタンの設定

マクロ名を「01従業員」とした
この「01従業員」マクロ下に フォームで操作するサブマクロを作成していくスタイル

ボタンの機能

入力途中でやり直す場合など 全コントロールをクリアな状態(初期値)に戻すためのボタン

ボタンのアクション

「キャンセル」マクロの実行

マクロの作成

「01従業員」マクロ下に「キャンセル」名でサブマクロを作成

「01従業員.キャンセル」マクロ

サブマクロ:キャンセル
値の代入
アイテム= [名字]
式= Null
値の代入
アイテム= [名前]
式= Null
値の代入
アイテム= [ミョウジ]
式= Null
値の代入
アイテム= [ナマエ]
式= Null
途中省略 <アイテムはフォームで入力するコントロール全部>
値の代入
アイテム= [権限]
式= 1
値の代入
アイテム= [雇用区分]
式= Null
[権限]コントロールは規定値の1を返す。その他はNull(空欄)を返す。


※[名字]以外はアクションを折りたたみした状態

マクロの設置

作成したマクロは上書き保存する
プロパティシート→イベント→クリック時→マクロ「01従業員.キャンセル」を選択

●「登録」ボタンの設定

まずは「01従業員M」テーブルに追加するクエリーを作成する

従業員新規登録の追加クエリを作成

クエリ名は「Q01従業員新規追加」にした

「F01従業員新規」フォームに入力し表示されているコントロールを「01従業員M」テーブルに追加する 追加クエリ作成手順
作成→クエリデザイン→テーブルの追加→「01従業員M」を選択→「01従業員M」の全フィールドをデザイングリッドに追加させる
→リボンから「追加」をクリック(追加クエリモードに変更)→追加先テーブル名を「01従業員M」とする
→グリッドのテーブルに「01従業員M」が表示される

→フィールドに 追加するフォームのコントロール名を指定する
(例)フィールド:従業員コードには  [Forms]![F01従業員新規]![従業員コード] と入力
→フィールドには 式1: [Forms]![F01従業員新規]![従業員コード] と表示される(左端に自動的に 式1: が追加される。同時にテーブルから 01従業員M が消える)

→全てのフィールドを同じようにフォームのコントロール名を指定していく
→IDはフォームにないコントロールなので デザイングリッドから削除する
→「氏名」に追加するのは フォームの「名字」と「名前」なのでフィールドを下記のようにする

[Forms]![F01従業員新規]![名字] & ” ” & [Forms]![F01従業員新規]![名前]

簡単解説

「名字」と「名前」を合体させて、その間に半角スペースを入れる

→「フリガナ」フィールドも同じようにする
[Forms]![F01従業員新規]![ミョウジ] & ” ” & [Forms]![F01従業員新規]![ナマエ]

→最後にフィールドリストに表示されている「01従業員M」テーブルを削除する(重要)


→クエリの保存

「登録」ボタンを押した時のマクロを作成

マクロ名を「01従業員」とした
この「01従業員」マクロ下に フォームで操作するサブマクロを作成していくスタイル

ボタンのアクション

・コントロールの未入力をチェック
・テーブルへ追加する最終確認
・「登録」マクロの実行

マクロの作成

「01従業員」マクロ下に「登録」名でサブマクロを作成

「01従業員.登録」マクロ

サブマクロ:登録
If IsNull([名字]) Then
メッセージボックス
メッセージ 氏名が記入されていません
警告音 はい
メッセージの種類 警告
メッセージタイトル 未記入
コントロールの移動
コントロール名 名字
マクロの中止
If文の最後
If IsNull([名前]) Then
途中省略 <以降は If文以降をコピペして 青字マーカー部分を フォームのコントロール名にする>

未入力だと困るコントロール全てに設定する

If文の最後
警告音
If MsgBox(“新規登録してもよろしいですか?”,4+32,”確認”)=6
メッセージの設定
メッセージの表示 いいえ
クエリを開く
クエリ名 Q01従業員新規追加
ビュー データシート
データモード 編集
メッセージボックス
メッセージ 新規従業員を登録しました。
警告音 はい
メッセージの種類 なし
メッセージタイトル 登録
マクロの実行
マクロ名 01従業員.キャンセル
コントロールの移動
コントロール名 名字
再クエリ
コントロール名
マクロの中止
Else
メッセージボックス
メッセージ 登録を中止します
警告音 はい
メッセージの種類 なし
メッセージタイトル 中止
マクロの中止
If文の最後
サブマクロの最後

マクロの簡単解説

・コントロールが未入力ならそのコントロールに移動してマクロを中止する
・追加クエリでテーブルにデータを追加する
・追加後は「キャンセル」クエリで全てのコントロールを空欄にしてアクションを終了

※[名字]以外はアクションを折りたたみした状態

マクロの設置

作成したマクロは上書き保存する
プロパティシート→イベント→クリック時→マクロ「01従業員.登録」を選択