Microsoft Access Club >初心者講座 >休暇申請管理ソフト >このページ >次頁 - 前項  サイト内検索


環境設定入力フォームの作成:休暇申請管理ソフト



今日はこのAccessファイルに多大の影響を与えている「環境設定」の入力フォームを作成します。下記のフォームが完成図(画像をクリックして下さい)です。

参考までに、下図はtbl_kanyoテーブルのデザインビューです。
では、フォーム上に全てのフィールドに対してテキストボックスまたはチェックボックスを配置します。

環境設定フォームの特色

  1. フォームプロパティの 「追加の許可」を"いいえ" にする。
  2. この環境設定入力フォームにはデータの追加を一切行いません。
  3. つまりデータを上書きしていきます。
  4. よって、全てのデータに付随するオートナンバーは、必ず 1 です。

サンプルプロシージャ

まず、最初に管理者パスワードの設定を勧めるメッセージを表示させるプロシージャの作成です。

管理者パスワードの特色は、

  1. 悪意のある第三者からシステムを保護します。
  2. 管理者パスワードの初期値は、0 とします。
  3. この事由で 0 をパスワードとすることはできません。
Private Sub Form_Open(Cancel As Integer)

    Call Kanrisha識別 'Subプロシージャを呼び出します。

End Sub

解説

Call 管理者についてお話します。 Kanrisha識別 Functionプロシージャは、独自に作成したn関数です。管理者パスワードが設定されていれば、Call関数によってFunction関数 Kanrisha識別 が実行されます。

Sub Kanrisha識別()

    Dim strmsg As Variant
    strmsg = "管理者登録〈管理者パスワードの設定〉が完了していません。" & Chr(13) & _
            "各種の環境設定は管理者のみ行えますので、" & _
            "直ちに、設定されることをお勧めします。" & Chr(13) & _
            "設定方法は、『環境設定』の管理者パスワード欄に、" & _
            "任意の10桁までの数値を入して下さい。" & Chr(13) & _
            "初期設定は 0 です。"

    '管理者のパスワード設定を勧めます。
    If DLookup("管理者Pass", "tbl_Kankyo", "ID=1") = 0 Then
        MsgBox strmsg, 16, "Akira"
    Else
        '管理者のパスワードを要求します。
        Call Pass管理者
    End If

End Sub

お分かりのように、この関数は入力されたパスワードを確かめる役割を担っています。Select Case関数を用いて条件分岐を行っています。

管理者パスワード

管理者パスワードが変更されると下記プロシージャでメッセージを表示させます。

Private Sub 管理者Pass_AfterUpdate()

    Dim strmsg As String
    
    strmsg = "管理者パスワードが変更されました。" & Chr(13) & _
            "今後、各種の設定で必要となりますのでご注意下さい。"
    
    MsgBox strmsg, 16, "Akira"

End Sub

Shift Keyを無効

Private Sub System変更_AfterUpdate()

    Dim strmsg As Variant
    strmsg = "管理者登録〈管理者パスワードの設定〉が完了していませんので、" & Chr(13) & _
            "システム変更を行うことができません。"

    '管理者のパスワード設定がされているか否か判断します。
    If DLookup("管理者Pass", "tbl_Kankyo", "ID=1") = 0 Then
        '設定されていなければ・・・。
        MsgBox strmsg, 16, "Akira"
        Me.管理者Pass.SetFocus
        Me.System変更 = False
        End
    Else
        'Functionプロシージャを呼び出します。
        Call ShiftKey_select

    End If

End Sub
解説

このチェックボックスを変更しますと、Call関数によってFunctionプロシージャ ShiftKey_select が実行されます。

但し管理者パスワードが設定されていることが条件です。Functionプロシージャ ShiftKey_select は下記のとおりです。

  • ChangeProperty "AllowBypassKey", dbBoolean, False

この構文で、Accessファイル再起動の後、ShiftKeyを無効にします。

何故、Shiftキーを無効にする必要があるかと云いますと、悪意のある第三者などから、テーブルデータ等の書き換えや削除を排除するためです。是非とも無効にされるのをお勧めします。

Functionプロシージャ ShiftKey_select
Function ShiftKey_select()

    Dim strmsg As String
    Dim varpassword As Variant

    'ShiftKeyを有効、無効にするためのパスワード入力を求めます。
    strmsg = "ShiftKeyを無効にする場合は、管理者パスワードを入力して下さい。"
    
    varpassword = DLookup("管理者Pass", "tbl_Kankyo", "ID=1")

    Select Case InputBox(strmsg, varkantoku)

        Case varpassword
            ChangeProperty "AllowBypassKey", dbBoolean, False
            MsgBox "ファイル再起動の後、ShiftKeyが無効になります。", 16, varkantoku
            Forms![frm_kankyo]![システム変更] = True

        Case 0
            ChangeProperty "AllowBypassKey", dbBoolean, True
            MsgBox "ファイル再起動の後、ShiftKeyが有効になります。", 16, varkantoku
            Forms![frm_kankyo]![システム変更] = False

        Case Else
            ChangeProperty "AllowBypassKey", dbBoolean, True
            MsgBox "ファイル再起動の後、ShiftKeyが有効になります。", 16, varkantoku
            Forms![frm_kankyo]![システム変更] = False

    End Select


End Function

ネットワーク機能を利用する

社内LAN塔で複数のコンピュータで利用する場合は、このネットワーク機能を利用するをチェック済みされることをお勧めします。チェック済みにしますと、各種の入力フォームにパスワード設定が可能となります。

Private Sub Network_AfterUpdate()

    If Me.Network = True Then
        Me.パス2.Visible = True
        Me.パス.Caption = "13.入力者の識別パスワード"
        DoCmd.GoToControl "パス2"
    Else
        Me.パス2.Visible = False
        Me.パス.Caption = ""
    End If

End Sub
解説

チェックボックスをTrueにしますと、「13.入力者の識別パスワードのテキストボックス」と表題が現われます。単に非表示から表示に切り替えるだけですが‥。これは、チェックボックスのTrueと連動させているからです。但し、このような非表示・表示のシステムを作成する場合は下記の点に注意してください。

フォームが立ち上がったときの既定値を、プロシージャで制御する必要があります。よって、フォームの読み込み時イベントで、下記のようなプロシージャを記述する。

Private Sub Form_Load()

    If Me.Network = True Then
        Me.パス.Caption = "13.入力者の識別パスワード"
        Me.パス2.Visible = True
    Else
        Me.パス.Caption = ""
        Me.パス2.Visible = False
    End If

End Sub

その他

14.開始月を解説しますと、これは有休年度を意味します。例えば、4月と入力すれば、この会社の有休年度は4月〜翌年の3月までを指します。これは大事なことで、有休申請アプリケーションでは避けては通れない問題です。このサンプルファイルでは、独自のFunctionプロシージャを利用して対処しています。

15.休暇申請書の印刷に関して、「決済枠」のオプションを設定しています。決裁者や決済枠の有無の設定が可能にしています。

 

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

 


環境設定入力フォームの作成:休暇申請管理ソフト


 

-Microsoft Access Club-