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


[編集/保存]ボタンをフォームに付加しパスワード設定を行う : Access裏技Tips



新規データ入力やデータの修正を特定の社員に限定したい時があります。 ここでは、新規データ入力やデータの修正を行う際に、パスワード制限をかけてデータを守る技を紹介します。

新規データ入力やデータ修正の更新時にパスワードを設定する

  1. サンプルテーブル(tbl_sample)をもとに単票式の売上高入力フォーム(frm_sample)を作成します。
  2. フォームフッターにコマンドボタン(Cmdコマンド)を作成します。 コマンドボタンクリック時イベントプロシージャを作成し、InputBoxステートメントを開きパスワードを求めます。
  3. パスワードが合えば、変数flagの値をFalseに切り替えます。
  4. データの保存、更新前に動作するフォームの更新前処理イベントプロシージャを作成し、変数flagの値がFalse以外であれば更新をキャンセルします。

売上高入力フォームの作成

  1. サンプルテーブルをもとに売上高入力フォームを作成します。
  2. フォームフッターを表示させます。
  3. フォームフッターにコマンドボタンを作成します。

フォームのイベントプロシージャの宣言セクションに変数の作成

フォームのイベントプロシージャの宣言セクションに変数を作成します。

Option Compare Database
Option Explicit

Dim CkPoint As Boolean ' --- A
解説
  1. フォームが開いている間、値を保持するために宣言セクション内に変数を定義しています。

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

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

Private Sub Form_Current()

    CkPoint = True ' --- A
    
End Sub
解説
  1. フォームが開いた時、レコードの移動時にCKPointをTrueに設定します。

フォームの更新処理前イベントプロシージャの作成

フォームの更新処理前イベントプロシージャを作成します。

Private Sub Form_BeforeUpdate(Cancel As Integer)

    Dim strmsg As String
    strmsg = "データを保存する場合は、[保存]ボタンをクリックして下さい。"
    
    If CkPoint <> False Then ' --- A
        MsgBox strmsg, vbCritical
        Cancel = True ' --- B
    End If
    
    CkPoint = True ' --- C
    
End Sub
解説
  1. IFステートメントを用いて、変数CKPointをチェックします。False値でなければ、以下の処理に進みます。 なお、コマンドボタンをクリックしていなければ、変数CKPointはTrue値の状態のままです。
  2. 更新前処理イベントプロシージャの引数 Cancel に True を設定すると、プログラムの進行をキャンセルすることができます。
  3. 変数CkPointの値を、True値に戻しておきます。

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

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

Private Sub Cmdコマンド_Click()

    Dim varInputBox As variant
    
    Const MyPass = 1234 ' --- A
    varInputBox = InputBox("パスワードを入力して下さい。") ' --- B
    
    If varInputBox = MyPass Then ' --- C
        CkPoint = False ' --- D
        MsgBox "データの保存が完了しました。", vbInformation
    Else
        MsgBox "パスワードが違います。"
    End If

End Sub
解説
  1. Constステートメントを用いて定数MyPassの値を1234と定義します。これはパスワードの値となります。
  2. InputBoxステートメントを用いて、ユーザーにパスワード入力を求めます。入力された値は変数varInputBoxで受け取ります。
  3. IFステートメントを用いて、InputBoxに入力された値(varInputBox)と定数MyPassを照合します。
  4. 変数CKPointをFalseの値に変更します。これをFalseに変更することで、データ保存が有効になります。
今回のおすすめポイント

Constステートメント

プロシージャ内で定数を宣言します。定数を使うとプログラムがわかりやすく、修正も容易になります。 しかし、変数とは異なり、定数はプログラムの実行中に値を変更できません。 なお、以下のように宣言しても間違いではありません。
Dim MyPass As Integer
MyPass = 1234

動作確認

  1. デザインビューからフォームビューに切り替え、新規データを入力します。
  2. 他のレコードに移動しようとすると、警告メッセージが立ち上がります。

  1. コマンドボタンを押すと、InputBoxステートメントが開きパスワードが求められます。
  2. パスワード 1234 入力すると、データ保存が完了します。

今回のおすすめポイント

BeforeUpdate(更新前処理)イベント

別のレコードに移動したりレコードを保存したとき、フォームに対してBeforeUpdateイベントが発生します。 このイベントは、複雑な入力値検査を行うときに利用されます。引数CancelにTrueを設定することで、更新をキャンセルすることができます。

関連ページ

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

 


[編集/保存]ボタンをフォームに付加しパスワード設定を行う : Access裏技Tips


 

-Microsoft Access Club-

PLESKやcPanelを思いのまま、ヨーロッパのフランス、ドイツ等の大手データセンターに配置しています。。
PLESKパネルやcPanelパネルを思いのまま..
ヨーロッパ大手データセンターを利用できます。