Microsoft Access Club >Access裏技Tips >このページ >次頁 < 前項 サイト内検索


メインフォームにパスワードと処理時間制限のセキュリティ機能をつける : Access裏技Tips



Accessへセキュリティを付加する場合、パスワード制限は大事な機能です。 ここでは、独自のパスワード制限と処理時間制限をメインフォームに付加する技を紹介します。

パスワードと処理時間制限のセキュリティ機能を作成

  1. メインフォームを作成し、テキストボックス(txtパスワード)とコマンドボタン(Cmdコマンド)と配置します。
  2. テキストボックスには、パスワード入力を行い、3回パスワード相違が発生すればAccessファイルを終了します。
  3. また、メインフォームを表示して30秒が経過した段階でも、Accessファイルを終了します。

トップフォームの作成

  1. 非連結のトップフォームを作成します。
  2. テキストボックスとコマンドボタンを作成します。
  3. フォームのポップアッププロパティ、作業ウィンドウ固定プロパティをそれぞれ"はい"に設定します。
  4. コマンドボタンの定形入力に"パスワード"を設定します。

今回のおすすめポイント

ポップアッププロパティ、作業ウィンドウ固定プロパティ

ポップアッププロパティ:フォームを最前面で開きます。
作業ウィンドウ固定プロパティ:そのフォームを閉じるまで、他のウィンドウを無効にします。

宣言セクションに変数を定義

フォームの宣言セクションに変数を定義します。

Option Compare Database
Option Explicit

Dim dat初期時刻 As Date ' --- A
Dim int回数 As Integer
Const dat終了 = "00" & ":" & "00" & ":" & "30" ' --- B
解説
  1. 変数dat初期時刻、int回数を値保持のため宣言セクションに定義します。
  2. 処理時間制限を行うため、定数dat終了を宣言します。

フォームの開く時イベントプロシージャの作成

フォームの開く時イベントプロシージャを作成します。

Private Sub Form_Open(Cancel As Integer)
        
    Me.TimerInterval = 1000 ' --- A
    dat初期時刻 = Time ' --- B
    
    Me.Caption = "パスワード入力までの残り時間 " & TimeValue(dat終了) ' --- C
    
End Sub
解説
  1. TimerIntervalプロパティを用いて、タイマ時イベントのタイマー間隔を1000/1000秒とします。
  2. Time関数を用いて、フォームを開いた時の時間を変数dat初期時刻に代入します。
  3. TimeValue関数を用いて、定数dat終了を日付/時刻型に変換します。

コマンドボタンクリック時イベントプロシージャの作成

コマンドボタンクリック時イベントプロシージャを作成します。

Private Sub Cmdコマンド_Click()
    
    Const PassCount = 3 ' --- A
    int回数 = int回数 + 1 ' --- B
    
    Select Case Me.txtパスワード
        Case "xy1234" ' --- C   
          Me.TimerInterval = 0 ' --- D
          DoCmd.Close
          DoCmd.OpenReport "rpt_sample", acViewPreview      
        Case Else
          If int回数 <> PassCount Then ' --- E
             Me.lblmsg.Caption = "PassWord : " & Me.txtパスワード & vbNewLine & _
                                 "パスワード相違!残り回数:" & _
				 PassCount - int回数 & "回"
             Me.txtパスワード = ""
             Me.txtパスワード.SetFocus ' --- F
            Else
             DoCmd.Close
             Application.Quit ' --- G
            End If
    End Select
            
End Sub
解説
  1. 定数PassCountを宣言します。パスワード入力回数の制限に利用します。
  2. 変数int回数に1を加算します。
  3. サンプルでは、パスワードをxy1234としています。
  4. 定数PassCountで宣言した回数を超えているなら、以下の処理に進みます。
  5. TimerIntervalプロパティの値を0にします。タイマ時イベントを停止します。
  6. SetFocusメソッドを用いて、txtパスワードテキストボックスにフォーカスを移動します。
  7. Accessを終了します。

タイマ時イベントプロシージャの作成

タイマ時イベントプロシージャを作成します。

Private Sub Form_Timer()

    Dim dat経過時刻 As Date ' --- A
    
    dat経過時刻 = Time - dat初期時刻 ' --- B
    Me.Caption = "パスワード入力までの残り時間 " & _
			CDate(TimeValue(dat終了) - dat経過時刻)  ' --- C
        
    'マイナスになれば、フォームを閉じ、ファイルを終了します。
    If TimeValue(dat終了) - dat経過時刻 <= 0 Then ' --- D
        DoCmd.Close
        Application.Quit ' --- E
    End If
    
End Sub
解説
  1. 変数dat経過時刻を宣言します。処理時間制限に利用します。
  2. 変数dat経過時刻にTime関数で求めた現在時刻から、フォームが開いた時刻を引きます。経過時間を求める式です。
  3. フォームの標題に、経過時間を表示します。データ型変換関数CDateを用いて、時刻型で表示します。
  4. 定数dat終了で宣言した時間を超えているなら、以下の処理に進みます。 E…Accessを終了します。

動作確認

  1. デザインビューからフォームビューに切り替えます。

  1. テキストボックスに 1234 と入力するとパスワード相違になります。
  2. その間でも時間が経過していきます。

  1. テキストボックスに xy1234 と入力するとレポートが開きます。

関連ページ

ページの先頭へ 前ページへ戻る

 


メインフォームにパスワードと処理時間制限のセキュリティ機能をつける : Access裏技Tips


 

-Microsoft Access Club-

注目のモンスター専用サーバーからお買い得プランまで幅広くそろえています。cPanel、PLESK、WEBMINまでお任せ下さい。
注目のモンスター専用サーバーからお買い得プランまで幅広い。
cPanel、PLESK、WEBMINまでお任せ下さい。