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


入力フォーム_その他オブジェクト_1:休暇申請管理ソフト



9月に入ってチョットは涼しくなったでしょうか。渇水がどこでも心配の種です。 今日は、残っているオブジェクトをご紹介しましょうか。まず、完成図をご覧下さい。ここをクリック…。

カレンダーコントロール 

これについての配置の仕方とプロシージャの記述方法は、No.5 カレンダーコントロール をご覧下さい。特に注意点はありません。 むしろ、配置賀のプロパティ設定が重要です。

プロパティの初期値では、下記のように右上部に月と年を選択するコンボボックスが配置されていますね。でも、今回のソフト作成ではこれらを使いません。特に理由は無いんですが‥。

では、これらをプロパティで非表示にして下さい。その代わりに、カレンダーの下部に「コマンドボタン」を2個配置します。このコマンドボタンで「月」を前後に移動させ ます。勿論、前後に移動させるプロシージャも必要です。

コマンドボタンで"前月"や"翌月"に移動する場合は、コマンドボタンのクリック時にDateAdd関数を利用してそれぞれ下記のようにプロシージャを記述します。#コントロールは、カレンダーコントロールの名前です。

前月を表示させる Me!コントロール.Value = DateAdd("m", -1, Me.コントロール.Value)
翌月を表示させる Me!コントロール.Value = DateAdd("m", 1, Me.コントロール.Value)

フォームの「読み込み時イベント」に下記プロシージャを記述します。これは、フォームの読み込み時に、カレンダーコントロールの初期設定を本日に設定するためです。

Private Sub Form_Load()

    '読み込み時にカレンダーコントロールを本日に設定します。
    Me.コントロール.today
  
End Sub

リストボックスの配置(2個)

フォームの左側に上下に配置します。

  • 上部のリストボックスには、社員別の休暇申請(取得)状況の一覧を表示させます。
    併せて、休暇申請を取り消す機能を付加します。
  • 下部のリストボックスには、月別の休暇申請(取得)状況の一覧を表示させます。

社員別の休暇申請(取得)状況の一覧リストボックス

表示させるデータは4種類だけです(日付と曜日を併せて"取得年月日"としているため)。

但し、ご覧のとおり、「列数」は 5 になっています。上記の項目以外に「ID」フィールドを入れ込んでいます。これは、当該の休暇申請を削除を、このIDを元に行うのでリストボックス内に絶対必要です。しかしあえて表示させる必要はありませんね。

このような場合は、該当のフィールド(今回はIDフィールドの意味)の列幅を 0cm とします。 つまり、IDを 隠れフィールド としています。(列幅を0cmとしているので表示されません)

「値集合ソース」には、クエリ名「qry_listbox_1」である下記のようなクエリを作成して下さい。

そうそう、リストボックスの欠点が、全て左詰めになってしまうことはよくご存知でしょう。左詰めは見にくいですね。そのため Space関数 を フィールド内に随所に入れています。

最後から2列目にある 年度([日付],[職員ID]) についてお話します。これはFunction関数 Yesrs を配置しています。ご注意下さい。

有給休暇の管理で一番ややこしいのは、年間の計算方法です。つまり、1月から12月までを1年間とするのか、4月から翌年の3月までを1年間とするのかです。

会社によっては6月から新年度と決めているところもあるでしょうし‥。2000年3月31日の取得は1999年度と計算するのか、はたまた2000年度か、全国統一しときゃいいのにね。

Years関数のプロシージャ

tbl_kankyoテーブルに 有休起算開始月 を格納するフィールドを設け、汎用に仕上げています。会社ごとに入力した数値でもって、下記の「年度関数 Years関数」で当該年度を決定するようにしています。

具体的に言いますと、2月から休暇年度を開始すると仮定します。すると下記プロシージャの2番目(太字)の部分によって、2月から12月までの取得日はその年の年度に、1月の取得は前年の年度となります。
つまり、1999年2月1日から2000年1月31日の取得は、全て1999年度となります。

Function Years(var年月日, var職員) As Variant

    Dim lngdlup_1 As Long
    lngdlup_1 = DLookup("[開始月]", "[tbl_kankyo]", "[ID]=1")

    Select Case lngdlup_1
        Case 1
            Select Case Month(var年月日)
                Case 1 To 12
                    Years = CLng(Year(var年月日))
            End Select

        Case 2
            Select Case Month(var年月日)
                Case 2 To 12
                    Years = CLng(Year(var年月日))
                Case Else
                    Years = CLng(Year(var年月日) - 1)
            End Select

        Case 3
            Select Case Month(var年月日)
                Case 3 To 12
                    Years = CLng(Year(var年月日))
                Case Else
                    Years = CLng(Year(var年月日) - 1)
            End Select

        Case 4
            Select Case Month(var年月日)
                Case 4 To 12
                    Years = CLng(Year(var年月日))
                Case Else
                    Years = CLng(Year(var年月日) - 1)
            End Select

        Case 5
            Select Case Month(var年月日)
                Case 5 To 12
                    Years = CLng(Year(var年月日))
                Case Else
                    Years = CLng(Year(var年月日) - 1)
            End Select

        Case 6
            Select Case Month(var年月日)
                Case 6 To 12
                    Years = CLng(Year(var年月日))
                Case Else
                    Years = CLng(Year(var年月日) - 1)
            End Select

        Case 7
            Select Case Month(var年月日)
                Case 7 To 12
                    Years = CLng(Year(var年月日))
                Case Else
                    Years = CLng(Year(var年月日) - 1)
            End Select

        Case 8
            Select Case Month(var年月日)
                Case 8 To 12
                    Years = CLng(Year(var年月日))
                Case Else
                    Years = CLng(Year(var年月日) - 1)
            End Select

        Case 9
            Select Case Month(var年月日)
                Case 9 To 12
                    Years = CLng(Year(var年月日))
                Case Else
                    Years = CLng(Year(var年月日) - 1)
            End Select

        Case 10
            Select Case Month(var年月日)
                Case 10 To 12
                    Years = CLng(Year(var年月日))
                Case Else
                    Years = CLng(Year(var年月日) - 1)
            End Select

        Case 11
            Select Case Month(var年月日)
                Case 11 To 12
                    Years = CLng(Year(var年月日))
                Case Else
                    Years = CLng(Year(var年月日) - 1)
            End Select

        Case 12
            Select Case Month(var年月日)
                Case 12
                    Years = CLng(Year(var年月日))
                Case Else
                    Years = CLng(Year(var年月日) - 1)
            End Select

    End Select

End Function

月別の休暇申請(取得)状況の一覧リストボックスとリストボックスプロパティ

このリストボックスは、フォーム下部に配置しています。

「値集合ソース」は、下記のとおりです。先程のリストボックスは、クエリを独自に作成しそれを配置していましたが、今回は直接書き込んでいます。

こちらも Space関数 を多用してる分、長々と見えるだけです。

このリストボックスには、イベントプロシージャを記述していません。データを表示するだけの代物ですので…。以上で、オブジェクトの説明は終わりました。次回は、難解な各プロシージャの話に進みます。

 

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

 


入力フォーム_その他オブジェクト_1:休暇申請管理ソフト


 

-Microsoft Access Club-