ACCESSでパスワード変更フォームの作り方

パスワード変更
目次

ACCESSでパスワード変更のシステム

こんなフォームを作ります

パスワード変更画面

前記事でログインフォームをつくりました 『【システム作り方 解説】ACCESSでログインフォーム

ログインフォームとは

システムの利用者がそのシステムを使う権限があるかを ユーザーコードとパスワードの組み合わせで判断し、権限があれば本システムのメニューが起動するといった機能がある画面です

また、ユーザを特定して次のシステムに進んだとき 権限によりそのシステムでできることできないことをわけることができます

そしてさらに 今回は そのパスワードを自分で変更できるフォームを作っていきます

銀行などのサイトにログインする場合、よく新しいパスワードに変更するよう促されますね。
定期的にパスワードを変更することで、よりセキュリティが強固になります。

ブ長

おおー ますますシステムっぽいぁ

ももい

うちみたいなちっちゃい会社では
ちょっとおおげさかなぁ

ブ長

ち ち ちっちゃい会社て

ももい

うっ 
まぁどんなシステムでもログインフォーム パスワード変更を実装しとけば今後のシステム運用にとても役立ちますので 作っていきましょう

パスワード変更の操作手順

  1. ログイン画面で自分の社員CDを選び パスワード変更ボタンをおす
  2. パスワード変更画面が開く
  3. 新しいパスワードを入力する
  4. 確認のためもう一度パスワードを入れる
  5. パスワード変更ボタンを押す

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を入れパスワードが正しければ パスワード変更画面に移ります
パスワード変更画面ではログインフォームで入れられた情報をひきつぎデフォルトでセットされるよう設定していきます

ログインよりひきつぐ
STEP
社員CD テキストへの設定

社員CDのテキストボックスを選択し プロパティシートのコントロールソースの […]を押すと 式ビルダーが起動する
式の要素から F_login 
式のカテゴリから txt_syainCD  を選んで ダブルクリックし OK

社員CDテキスト
STEP
社員名 テキストへの設定

社員名のテキストボックスを選択し プロパティシートのコントロールソースの […]を押すと 式ビルダーが起動する
式の要素から F_login
式のカテゴリから txt_syainName を選んでダブルクリックし OK

社員名ビルダー
STEP
今のPASSWORD テキストへの設定

今のPASSWORDのテキストボックスを選択し プロパティシートのコントロールソースの […]を押すと 式ビルダーが起動する
式の要素から F_login
式のカテゴリから txt_Pass を選んでダブルクリックし OK

ぱすビルダー
STEP
各テキストボックスにログインフォームで入れた情報が表示される
ログインよりひきつぐ

パスワードを入力し 変更ボタンにチェック機能をつける

パスワード変更画面
チェック項目
  • テキストに入力されていない時は入力を促すメッセージ
  • 両方に入力された内容が同じでなければ注意のメッセージ
  • 新しく入力された内容が前のパスワードと同じならメッセージ
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
VBA01

チェック① パスワード入力もれ

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 を作成します

更新クエリ
STEP
テーブルの追加

テーブルの追加から SYS社員 を選び フィールドに 社員CD PASSWORD を選びます

Q_kosin
STEP
社員CDの抽出条件

社員CDの抽出条件を選び クエリデザインのビルダーを選ぶと 式ビルダーが起動します
式の要素 F_Pass
式のカテゴリ cmb_syainCD  をダブルクリックしOK

社員CD抽出条件
STEP
PASSWORDのレコードの更新

PASSWORDのレコードの更新を選び 式ビルダーを起動する
式の要素 F_Pass
式のカテゴリ txt_NewPass をダブルクリックでOK

レコードの更新
STEP
クエリにセットされて Q_kosin が完成
更新クエリ

マスタに新パスワードがセットされるVBAを記述する

更新の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に戻しておく

実行すると マスタに新パスワードがセットされる

パスワード変更

マスタの中身をみてみましょう

マスタPASSWORD

新しいパスワードに変更されました

自力でACCESSシステム作成をサポートします

ACCESSって おもしろいかも と思ってくださった方
いやまだ ACCESSって よくわからない という方
そして 自分でACCESSシステムがつくれるようになったらいいな という方々へ

自力でACCESSシステム作成をサポートします

ACCESSシステムを作って公開するにあたって
マニア建機リースの社員情報や車両情報などのデータがないと作ることはできません
しかし 実際のデータを使うことはできません
そこで そんなデータをランダムに作ってくれるツールがあります

目次