PR

Access アカウント名で閲覧権限を設定する方法

VBA

Accessでデータベースを作成し、複数ユーザーで使用をする際、情報を開示しても良い範囲が異なった場合に閲覧権限を考慮する必要が出てきます。

昨今は情報流出の問題もあり、特に閲覧権限の設定などは重要な処置となります。

そこで今回は、Accessフォームにおいて閲覧権限などのアクセスレベルを設定する方法を紹介します。

スポンサーリンク

サンプルテーブル

まずは、アカウントと閲覧権限を管理するためのテーブルとして「T_ユーザー」テーブルを作成します。

フィールド名とデータ型はそれぞれ、「アカウント: 短いテキスト」、「アクセスレベル: 数値型」とします。

続いて、表1に示すようにサンプルデータを登録します。ここで、注意する点としてアカウント名はパソコンにログインする際の名前であるということです。

表1 サンプルデータ

アカウント アクセスレベル
a12345 1
b34567 9
c56789 9

なお、本サンプルにおけるアクセスレベルとして「1」は管理者を、「9」は管理者以外の一般ユーザーとしています。

フォームの作成とコードの実装

続いて、フォームを作成します。図1に示すように、「TEST」と記載されたコマンドボタンを一つ配置し、このコマンドボタンの名前は「cmd_TEST」とします。

図1 TEST用コマンドボタンの配置

配置後、「cmd_TEST」のプロパティを開き、「クリック時」プロパティに「イベントプロシージャ」を設定します。これで、「cmd_TEST」をクリックした際にVBAで実装したコード内容に沿った処理を行う準備ができましたので、続いてコードを実装していきます。

「cmd_TEST」コマンドボタンに設定した「イベントプロシージャ」横の「…」をクリックするとVBA画面が開くため、以下に示すコードを追記します。

Private Sub cmd_TEST_Click()

'変数宣言
Dim NetworkObject As Object
Dim AccountName As String

'アカウント名の取得
Set NetworkObject = CreateObject("WScript.Network")
AccountName = NetworkObject.UserName

'アカウント名からアクセスレベルを取得し条件分岐
If DLookup("アクセスレベル", "T_ユーザー", "アカウント = '" & AccountName & "'") = 1 Then

  MsgBox "あなたは管理者です。"

Else

  MsgBox "あなたは管理者ではありません。"

End If

End Sub

さて、各コードの内容を確認していきましょう。

変数宣言をした後、「NetworkObject」を用いて「UserName」を取得します。これらアカウント名取得のために記載した2行のコードは定型として使用してもらえれば良いと思います。

次に、「T_ユーザー」テーブルでアクセスレベルを「1」と「9」と割り振っていますが、アカウント名が取得できた段階でDLookUp関数を用いて、ユーザーのアクセスレベルを取得するというルーチンにしています。

ここで、DLookUp関数については以下の記事をご参照ください。

得られた値から、管理者の場合はTrueを、そうでなければ管理者ではないとしてFalseを返すようにしています。実際には、アクセスレベルを段階的に設定し、これに応じた閲覧権限を付与することが可能です。アクセスレベルを数字で管理しているのは、複数のレベルがある場合に、「~以上」や「~未満」等のように一律で設定することができるからです。例えば、部長、課長をそれぞれ「1」、「2」とアクセスレベルに設定し、課長以上の役職の人に閲覧権限を与えたい場合、「<=2」として条件設定ができるわけです。

改めて、全てのコードを記載したVBA画面を図2に示します。

図2 今回作成したコードの例

ここまでで、コードの実装もできましたので、あとはどのように動くかを確認しましょう。

「T_ユーザー」テーブルに登録したアカウントでログインし、「TEST」ボタンをクリックします。

すると、管理者として設定したアカウントの場合とそうでない場合とで処理が分岐され、図3に示すような結果が得られると思います。

図3 アクセスレベルに応じた結果

まとめ

今回は情報セキュリティの観点からアカウント名に応じた閲覧権限の設定方法を紹介しました。昨今の情報管理については厳格化される一方ですが、ちょっとした仕組みで閲覧権限を設定することができますので、Accessでデータ管理をされている場合は、実装されてみてはいかがでしょうか。

より詳しい内容を知りたい方は、専門書なども参考になると思いますので、お手元に1冊用意されてみてはいかがでしょうか。

スポンサーリンク

Kindle Unlimitedにサインアップして無料体験に登録する
Kindle Unlimitedに登録すると、人気のシリーズ、ベストセラー、名作などに好きなだけアクセスして、シームレスなデジタル読書体験を実現できます。

コメント

タイトルとURLをコピーしました