ACCESSでパスワード変更のシステム
こんなフォームを作ります
前記事でログインフォームをつくりました 『【システム作り方 解説】ACCESSでログインフォーム』
システムの利用者がそのシステムを使う権限があるかを ユーザーコードとパスワードの組み合わせで判断し、権限があれば本システムのメニューが起動するといった機能がある画面です
また、ユーザを特定して次のシステムに進んだとき 権限によりそのシステムでできることできないことをわけることができます
そしてさらに 今回は そのパスワードを自分で変更できるフォームを作っていきます
銀行などのサイトにログインする場合、よく新しいパスワードに変更するよう促されますね。
定期的にパスワードを変更することで、よりセキュリティが強固になります。
おおー ますますシステムっぽいぁ
うちみたいなちっちゃい会社では
ちょっとおおげさかなぁ
ち ち ちっちゃい会社て
うっ
まぁどんなシステムでもログインフォーム パスワード変更を実装しとけば今後のシステム運用にとても役立ちますので 作っていきましょう
パスワード変更の操作手順
- ログイン画面で自分の社員CDを選び パスワード変更ボタンをおす
- パスワード変更画面が開く
- 新しいパスワードを入力する
- 確認のためもう一度パスワードを入れる
- パスワード変更ボタンを押す
ACCESSで パスワード変更画面 つくっていきます
ログインフォームのパスワード変更ボタンの設定
ログインフォームのパスワード変更ボタンにログインボタンと同様のチェック機能をつけます
- 社員CDが未入力のとき メッセージ「社員CDを選んでください」と表示
- 社員CDがリストにないとき メッセージ「社員CDを確認してください」と表示
- パスワードが違うとき メッセージ「パスワードが違います」と表示
上記チェックがすべて問題なければ パスワード変更画面(F_Pass)を開く
パスワード変更 ボタンのイベントプロシージャを開きコードを記述していきます
Private Sub btn_passchange_Click()
On Error GoTo Err_btn_passchange_Click
If IsNull(Me!cmb_syainCD) Then
MsgBox "社員CDを選んでください"
Me!cmb_syainCD.SetFocus
Else
If IsNull(DLookup("氏名", "Q_cmbsyain", "社員CD = " & Me!cmb_syainCD)) Then
Me!txt_syainName = ""
Me!txt_Pass = ""
Me!txt_kengen = ""
MsgBox "社員CDを確認してください"
Me!cmb_syainCD.SetFocus
Else
If Me!txt_Pass <> DLookup("password", "SYS社員", "社員CD = " & Me!cmb_syainCD) Then
MsgBox "パスワードが違います", vbOKOnly
Else
DoCmd.OpenForm "F_Pass"
End If
End If
End If
Exit_btn_passchange_Click:
Exit Sub
Err_btn_passchange_Click:
MsgBox Err.Description
Resume Exit_btn_passchange_Click
End Sub
フォーム F_Pass が開きます
ログインフォームから 社員CD 社員名 パスワードを ひきついで表示させる方法
ログインフォームで社員CDを入れパスワードが正しければ パスワード変更画面に移ります
パスワード変更画面ではログインフォームで入れられた情報をひきつぎデフォルトでセットされるよう設定していきます
社員CDのテキストボックスを選択し プロパティシートのコントロールソースの […]を押すと 式ビルダーが起動する
式の要素から F_login
式のカテゴリから txt_syainCD を選んで ダブルクリックし OK
社員名のテキストボックスを選択し プロパティシートのコントロールソースの […]を押すと 式ビルダーが起動する
式の要素から F_login
式のカテゴリから txt_syainName を選んでダブルクリックし OK
今のPASSWORDのテキストボックスを選択し プロパティシートのコントロールソースの […]を押すと 式ビルダーが起動する
式の要素から F_login
式のカテゴリから txt_Pass を選んでダブルクリックし OK
パスワードを入力し 変更ボタンにチェック機能をつける
- テキストに入力されていない時は入力を促すメッセージ
- 両方に入力された内容が同じでなければ注意のメッセージ
- 新しく入力された内容が前のパスワードと同じならメッセージ
Private Sub btn_change_Click()
On Error GoTo Err_btn_change_Click
'///チェック
If IsNull(Me!txt_NewPass) Or IsNull(Me!txt_NewPass1) Then
MsgBox "パスワードを2つとも入力してください"
Me!txt_NewPass.SetFocus
Exit Sub
Else
If Me!txt_Pass = Me!txt_NewPass Then
MsgBox "パスワードが前と同じです 違うパスワードを入れてください"
Me!txt_NewPass.SetFocus
Exit Sub
Else
If Me!txt_NewPass <> Me!txt_NewPass1 Then
MsgBox "同じパスワードを入れてください"
Me!txt_NewPass.SetFocus
Exit Sub
End If
End If
End If
'// パスワードをマスタに更新
DoCmd.SetWarnings False
DoCmd.OpenQuery "Q_kosin"
DoCmd.SetWarnings True
MsgBox "パスワードを変更しました"
Exit_btn_change_Click:
Exit Sub
Err_btn_change_Click:
MsgBox Err.Description
Resume Exit_btn_change_Click
End Sub
チェック① パスワード入力もれ
If IsNull(Me!txt_NewPass) Or IsNull(Me!txt_NewPass1) Then
MsgBox “パスワードを2つとも入力してください”
Me!txt_NewPass.SetFocus
Exit Sub
チェック② 前と同じパスワードにした
Else
If Me!txt_Pass = Me!txt_NewPass Then
MsgBox “パスワードが前と同じです 違うパスワードを入れてください”
Me!txt_NewPass.SetFocus
Exit Sub
チェック③ 確認のためのパスワードが異なっている
Else
If Me!txt_NewPass <> Me!txt_NewPass1 Then
MsgBox “同じパスワードを入れてください”
Me!txt_NewPass.SetFocus
Exit Sub
すべてのチェックが通ったら マスタに新パスワードをセット
更新クエリ Q_kosin を作成します
テーブルの追加から SYS社員 を選び フィールドに 社員CD PASSWORD を選びます
社員CDの抽出条件を選び クエリデザインのビルダーを選ぶと 式ビルダーが起動します
式の要素 F_Pass
式のカテゴリ cmb_syainCD をダブルクリックしOK
PASSWORDのレコードの更新を選び 式ビルダーを起動する
式の要素 F_Pass
式のカテゴリ txt_NewPass をダブルクリックでOK
マスタに新パスワードがセットされるVBAを記述する
DoCmd.SetWarnings False
DoCmd.OpenQuery “Q_kosin”
DoCmd.SetWarnings True
MsgBox “パスワードを変更しました”
DoCmd.SetWarnings False : 更新クエリなどはテーブルに更新するタイミングで都度メッセージがでるが
False の記述でメッセージがでなくなる
DoCmd.OpenQuery “Q_kosin” : 更新クエリ Q_kosin が実行される
DoCmd.SetWarnings True : False をTrueに戻しておく
実行すると マスタに新パスワードがセットされる
マスタの中身をみてみましょう
新しいパスワードに変更されました
自力でACCESSシステム作成をサポートします
ACCESSって おもしろいかも と思ってくださった方
いやまだ ACCESSって よくわからない という方
そして 自分でACCESSシステムがつくれるようになったらいいな という方々へ
自力でACCESSシステム作成をサポートします
ACCESSシステムを作って公開するにあたって
マニア建機リースの社員情報や車両情報などのデータがないと作ることはできません
しかし 実際のデータを使うことはできません
そこで そんなデータをランダムに作ってくれるツールがあります