パソコン、スマホ関係での格闘記

めいあんのIT格闘記

Access

アクセス履歴付き ログイン画面を作る(Access)(サンプル付き)




アクセス履歴付き ログイン画面を作る(Access)(サンプル付き)

はじめに

在庫管理システムを作るにあたって、複数社員で使用するにはログイン画面が必要であると思いつつ、今まで盛り込んできませんでした。

ログイン画面のみをテストで作りました。目指すはただ1点、

・パスワードはハッシュ値で管理する

サンプルにはハッシュ値の元になる文字列(平文)がありますが、動作確認後には削除してお使いください。

ハッシュ値にはSHA256を利用しました。

 

あわせて読みたい
code-1839406
簡易的にAccessデータベースで在庫管理システムを作成(サンプル付)

はじめに 必要に迫られて簡易的な在庫管理システムを作りました。 在庫管理システムを作るにあたり、それはもう膨大な数のWebサイトを参考にしました。そのまま使えるAccessの在庫管理システムがあればい ...

続きを見る

お詫び(2020/06/11)

Ver.0.5にてVBAにバグがありました。

バージョン履歴

日付 バージョン 改訂内容
2020/04/16 0.1 とりあえず
2020/04/30 0.2 ログイン履歴を記録
2020/05/05 0.3 テーブル名変更。ログイン履歴画面変更。パスワード更新画面追加。他微修正。
2020/05/08 0.4 ログイン履歴の一覧をExcelにエクスポートする機能追加。
2020/06/03 0.5 テーブル名変更、「T_」を付加。VBAにバグがあったので修正。
2020/06/11 0.6 「T_社員」テーブルに新規パスワードフィールド追加して、「F_新規登録」フォーム削除。バグ修正。

使いやすいようにご自由に改変してお使いください。

在庫管理システムにフォームやクエリをエクスポートして使えるようにテーブル名を変更しました。

「新規登録」フォームを削除し、「T_社員」テーブルに「初期パスワード」フィールドを追加しました。この値がTrueの時に、強制的に「F_PW変更」フォームに飛びます。パスワードを変更するまで「初期パスワード」フィールドはFalseになりません。

フォームのプロパティ(共通)

プロパティ 変更後の設定
ポップアップ はい
レコードセレクタ いいえ
移動ボタン いいえ
境界線スタイル なし

テーブル

ID オートナンバー型
社員コード 数値型
社員名 短いテキスト
パスワード 短いテキスト
平文 短いテキスト
初期パスワード Yes/No型
登録日 日付/時刻型

平文のフィールドは動作確認後には削除してお使いください。

ID オートナンバー型
社員コード 数値型
日時 短いテキスト
成功or失敗 Yes/No型
IPアドレス 短いテキスト
ID オートナンバー型
成功or失敗 Yes/No型
ログイン 短いテキスト

☑:成功
□:失敗

ID オートナンバー型
バージョン 数値型
更新内容 テキスト型

ログイン画面

ログインが管理者である場合にはログイン履歴画面を表示するようにしてあります。

フォーム

ログイン画面

以下のコントロールを配置します。

社員コード:コンボボックス(名前:cmb_社員コード)
パスワード:テキストボックス(名前:txt_パスワード)

ログイン:コマンドボタン(名前:cmd_ログイン)
パスワード変更:コマンドボタン(名前:cmd_PW変更)
新規登録:コマンドボタン(名前:cmd_新規登録)

cmb_社員コード一覧に登録のない社員さんが登録依頼をする場合に管理者にEメールするということも可能かと思います。下記記事も参考にしてみてください。

code-1839406
AccessデータベースからEメールを送る(サンプル付き)

在庫管理システムを作っていて「【安全在庫】に引っかかる品目が現れたら管理者にEメールを飛ばしたい」と思っていました。 「さすがにAccessからはEメールは送れないだろう」と調べもしておりませんでした ...

続きを見る

VBAコード




アクセス履歴付き ログイン画面を作る(Access)(サンプル付き)

パスワード変更画面

フォーム

パスワード変更画面

以下のコントロールを配置します。

社員コード:テキストボックス(名前:txt_社員コード)
旧パスワード:テキストボックス(名前:txt_旧パスワード)
パスワード:テキストボックス(名前:txt_パスワード)
パスワード再入力:テキストボックス(名前:txt_パスワード再)

登録:コマンドボタン(名前:cmd_登録)
キャンセル:コマンドボタン(名前:cmd_Cancel)

VBA




アクセス履歴付き ログイン画面を作る(Access)(サンプル付き)

ログイン履歴画面

フォーム

新規フォームにて空フォームを呼び出し、【デザイン】タブから【サブフォーム】を選びます。

F_ログイン履歴

以下のコントロールを配置します。

履歴クリア:コマンドボタン(名前:cmd_Clear)
EXCELにエクスポート:コマンドボタン(名前:cmd_エクスポート)
閉じる:コマンドボタン(名前:cmd_Close)

サブフォーム(名前:Q_ログイン履歴のサブフォーム)

クエリ

新規クエリにて3つのテーブル(ログイン履歴、社員、合否)を読み込み、結合させます。

Q_ログイン履歴

以下のSQLを【SQLビュー】にコピペすると上記のクエリがサクッと反映されるかもしれません。

SQLビュー

上記SQLをクエリにコピーするには【作成】タブから【クエリデザイン】を選びます。【テーブルの選択】は閉じて、現れたウィンドウのタブの部分で右クリックし、【SQLビュー】を選びます。【SQLビュー】の状態でコードをペーストし、タブから【デザインビュー】を選べば元に戻ります。

SQLビューの開き方

VBAコード




アクセス履歴付き ログイン画面を作る(Access)(サンプル付き)

標準モジュール

ハッシュ値生成関数

関数名:SHA256

参考URL⇩

IPアドレス取得関数

関数名:GetIPAddress

VBAコード

 




アクセス履歴付き ログイン画面を作る(Access)(サンプル付き)

サンプルダウンロード

拡張子.mdb形式にしましたので、Access2002~Access2019で開けると思います。

Ver.0.6(2020/06/11)

ファイルはこちら

最後に

パスワードのSHA256の文字列を簡単に求めます。

VBAのエディタからメニュー【表示】ー【イミディエイトウィンドウ】を選択します。

例えば「sanmple」という文字列のハッシュ値を求めたい場合、イミディエイトウィンドウにて

とすることで、sha256のハッシュ値を得られます。コピペだけでなく、行末でEnterキーを押してください。

イミディエイトウィンドウ

エクスポート

ログイン画面のないアプリにエクスポートする方法です。テーブル・フォーム・クエリをエクスポートします。エクスポートしたいフォーム等で右クリックして【エクスポート】から下記の画面のように【Access】を選びます。

エクスポート

エクスポート先のデータベースファイルを選択します。例えば、まだログイン画面を実装していない在庫管理システムなどのデータベースファイルを選択します。

エクスポート2

【OK】ボタンをクリックします。これで先方のデータベースファイルにフォーム・クエリ・テーブルをエクスポートできます。

エクスポート3

完成したら

完成すると、フォームの表示だけにしたくなります。その際のAccessの設定は下記リンクに記載がありますので参照ください。ここでダウンロードするデータベースは編集できるように下記リンクのような処理は施しておりません。

・フォームオープン時のVBA記述
・Accessのオプション設定

-Access
-, , , , ,

© 2020 めいあんのIT格闘記

© 2020 めいあんのIT格闘記