Access

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

2020年4月16日

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

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

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

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

ハッシュ値には.NET Flamework3.5のSHA256を利用しました。

8月6日追記:サーバーを移転したことで、画像表示がなくなった箇所があります。近日中に修正します。

あわせて読みたい

お詫び(2020/06/11)

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

バージョン履歴

日付バージョン改訂内容
2020/04/160.1とりあえず
2020/04/300.2ログイン履歴を記録
2020/05/050.3テーブル名変更。ログイン履歴画面変更。パスワード更新画面追加。他微修正。
2020/05/080.4ログイン履歴の一覧をExcelにエクスポートする機能追加。
2020/06/030.5テーブル名変更、「T_」を付加。VBAにバグがあったので修正。
2020/06/110.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メールするということも可能かと思います。下記記事も参考にしてみてください。

あわせて読みたい

VBAコード

パスワード変更画面

フォーム

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

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

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

VBA

ログイン履歴画面

フォーム

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

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

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

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

クエリ

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

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

SQLビュー

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

VBAコード

標準モジュール

ハッシュ値生成関数

関数名:SHA256

参考URL:http://www.se-japan.com/memo/vbscript/

IPアドレス取得関数

関数名:GetIPAddress

VBAコード

サンプルダウンロード

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

Ver.0.6(2020/06/11)

ファイルはこちら

最後に

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

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

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

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

エクスポート

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

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

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

.NET Flamework3.5をインストールできない場合

コメントにて.NET Flamework3.5がインストールされていないPCにてSHA256を計算したい旨ありました。そのPCはインターネットに接続されておらず、またUSBメモリはセキュリティ上使用不可になっているとのことで、探しました。こちらのコードが参考になるかと思います。Visual Basic6ですので、.NET用に書き換える必要はありますが。

https://wiz-code.net/vb/algorithm/sha256/13_vba.html

完成したら

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

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

https://www.feedsoft.net/access/guide-form/guidef81.html

-Access
-, , , , ,

Please disable your adblocker or whitelist this site!

//アドセンスの遅延読み込み