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


日別休暇申請閲覧フォームの作成_1:休暇申請管理ソフト



もう一つの閲覧フォームを作成しましょうか。

日別に休暇申請を行っている社員を表示しましょう。概要は下記のようなフォームです。35日間の日付とリストボックスが並んでいますね。そうこれらは、テキストボックスとリストボックスなんです。

 

 

本日を基準として、ずらーと並びます。フォーム下部に「以前」と「以降」を表示できるコマンドボタンと「元に戻る」コマンドボタンを配置します。そして、"隠しテキストボックス"を1個作成し、名前を「選択」とします。

 

 

作成方法

  1. まず「テキストボックス」を1個配置して下さい。
  2. これは、当日を表示するテキストボックスとします。
  3. テキストボックスのプロパティで「罫線」を透明にします。
  4. コントロールソースに下記式を記述して下さい。

 

  • =Format(Date()+[選択],'m\月d\日') & Format(Weekday(Date()+[選択]),'(aaa)')

 

これで、月日に曜日を付加して表示します。

  • Date()は、当日の日付を返す関数です。
  • Weekday()は、曜日を整数(1ならば日曜日)で返します。

詳しくはAccessヘルプで調べて下さい。また、式を続けて記述する場合は & で結びます。

 

  1. 作成したテキストボックスを元に、次々とコピーします。
  2. そして、上記の個数を所定の位置に配置して下さい。
  3. 但し、2個目(翌日の表示)からのテキストボックスのコントロールソースは各々異なりますので注意して下さい。
  4. 2個目(翌日表示)のコントロールソースは下記のとおりです。

 

  • =Format(Date()+1+[選択],'m\月d\日') & Format(Weekday(Date()+1+[選択]),'(aaa)')

 

  1. 最初のテキストボックスのコントロールソースと比べて +1 というところが異なります。
  2. 理由は、そうですね、日付を一日づつ増やしていかなくてはいけませんので‥。
  3. 3個目(翌々日表示)は
  4. =Format(Date()+2+[選択],'m\月d\日') & Format(Weekday(Date()+2+[選択]),'(aaa)')
  5. となりますね。
  6. 次に、隠しテキストボックスを1個作成して下さい。名前は「選択」として下さい。上記のコントロールソースに記述した「選択」のことです。

 

この隠しテキストボックスの使い方は、「以前」と「以降」の日別申請状況を表示させるために利用するだけです。

 

 

リストボックス

次にリストボックスの話に進みます。

  1. リストボックスを1個(本日用)作成して下さい。列数は"1"にして下さいね。
  2. ここで問題になるのは、「値集合ソース」です。下記のようなクエリを作成します。

 

 

  1. そして、このリストボックスもテキストボックスの時と同様、次々とコピーし配置させて下さい。
  2. 但し、抽出条件はその都度変更する必要がありますので注意して下さい。
  3. 抽出条件は、Date()+[選択] です。これと同じものが、テキストボックスのコントロールソースに記述した式の中にありましたね。
  4. 抽出条件も翌日ならば Date()+1+[選択]、翌々日ならば Date()+2+[選択]と数字を増やしていきます。

 

 

社員名 + 休暇種別

リストボックスに表示させるのは社員名でいいんですが、ここでチョット工夫して、社員名の後ろに休暇種別を表示させて見ましょう。

上記の青い丸をしている「名」フィールドを見て下さい。ズームで見ますと下記のようになっています。

 

名: Switch([適用]="有休",[入力者名] & "(有)",[適用]="代休",[入力者名] & "(代)",[適用]="振替",[入力者名] & "(振)",[適用]="特休",[入力者名] & "(特)",True,[入力者名] & "(etc)")

 

Switch関数

Switch関数を利用して休暇種別を付加しています。Switch関数とは下記のようなものです。

  • Switch("参加者"="京子","美人",true,"健康的")

文章で置き換えると、

  • 参加者の中で、"京子"という名前の方は"美人"に、その他(上記の例では、True)の場合は"健康的"と分類する。

と云うことになります。

 

Accessヘルプ
  • Switch 関数では、リスト内の式のいずれか 1 つだけが返されますが、評価はリスト内のすべての式に対して行われます。このため、Switch 関数を使うと、予期しない結果が起きることがあります。たとえば、評価すると 0 による除算エラーが発生する式が 1 つでも含まれていれば、エラーになります。

テキストボックスとリストボックスはセットになります。これを順次コピーし抽出条件等を変更することで、このフォームを完成させています。利用できるものは利用しなくちゃね。

 

 

元に戻るコマンドボタン

次に、「以前」と「以降」を表示できるコマンドボタンと「元に戻る」コマンドボタンについてお話します。

 

サンプルプロシージャ

各コマンドボタンの「クリック時」イベントに下記のようなプロシージャを記述します。

Private Sub 前_Click()

    Me.選択 = Me.選択 - 35
    
    Call AllRequery 'Subプロシージャを呼び出します。
    DoCmd.ShowAllRecords

End Sub

Private Sub 後_Click()

    Me.選択 = Me.選択 + 35
    
    Call AllRequery  'Subプロシージャを呼び出します。
    DoCmd.ShowAllRecords

End Sub

Private Sub 元_Click()

    Me.選択 = 0
    
    Call AllRequery 'Subプロシージャを呼び出します。
    DoCmd.ShowAllRecords

End Sub

 

Me.選択は、隠しテキストボックスのことです。このテキストボックスの役割は、

  • カレンダー(日付)表示のコントロールソースに記述しているDate()+[選択]
  • クエリの「値集合ソース」に記述している Date()+[選択]

にある「選択」に数値を代入することです。

 

例えば、+35とすれば35日目が基準となり日付の一覧が始まります。-35も同様です。いわば 変数 ですかね。なお、このテキストボックスの既定値は 0としています。

Subプロシージャ AllRequery はこのフォームだけで利用するので、クラスプロシージャとして記述しています。

 

Sub AllRequery()

    DoCmd.Requery "リスト"
    DoCmd.Requery "リスト0"
    DoCmd.Requery "リスト1"
    DoCmd.Requery "リスト2"
    DoCmd.Requery "リスト3"
    DoCmd.Requery "リスト4"
    DoCmd.Requery "リスト5"
    DoCmd.Requery "リスト6"
    DoCmd.Requery "リスト7"
    DoCmd.Requery "リスト8"
    DoCmd.Requery "リスト9"
    DoCmd.Requery "リスト10"
    DoCmd.Requery "リスト11"
    DoCmd.Requery "リスト12"
    DoCmd.Requery "リスト13"
    DoCmd.Requery "リスト14"
    DoCmd.Requery "リスト15"
    DoCmd.Requery "リスト16"
    DoCmd.Requery "リスト17"
    DoCmd.Requery "リスト18"
    DoCmd.Requery "リスト19"
    DoCmd.Requery "リスト20"
    DoCmd.Requery "リスト21"
    DoCmd.Requery "リスト22"
    DoCmd.Requery "リスト23"
    DoCmd.Requery "リスト24"
    DoCmd.Requery "リスト25"
    DoCmd.Requery "リスト26"
    DoCmd.Requery "リスト27"
    DoCmd.Requery "リスト28"
    DoCmd.Requery "リスト29"
    DoCmd.Requery "リスト30"
    DoCmd.Requery "リスト31"
    DoCmd.Requery "リスト32"
    DoCmd.Requery "リスト33"

End Sub

 

このプロシージャは、配置したリストボックス(名前は リスト**)を再クエリするだけです。割と簡単でしょう。このような組み方は、他にも応用できますので、便利ですよ。
 


日別休暇申請閲覧フォームの作成_1:休暇申請管理ソフト


 

-Microsoft Access Club-