0

私はアクセスするのが初めてで、「その場で学習」しようとしています。2003年版を使用しています

スタッフの病気休暇を記録するデータベースがあります。tbls は tblLeaveEvent、tblEmployeeDetails、tblLeaveType です。

休暇を記録するフォームがあり、クエリによってすべての従業員の詳細がフォームに入力されます。カレンダーから休暇の開始日を選択し、ドロップダウンから休暇の種類を選択し、リスト 0 ~ 5 から休暇期間を選択します。

私の問題は、誰かが木曜日に病気で電話をかけてきて、彼らが 3 日間仕事を休むと言った場合、私のフォームには木曜日に 3 日間の休暇があると記録されることです。

データベースに木曜の 1 日休暇、金曜の 1 日休暇、月曜の 1 日休暇を記録させるにはどうすればよいですか?

#days 期間ではなく、デザインを変更して終了日を選択する必要がありますか? カレンダーから終了日を選択した場合、終了日を無視するにはどうすればよいですか?

うまくいけば、私の問題に対する非常に簡単な解決策があります。Thnx、デビッド

4

1 に答える 1

0

日付に依存するほぼすべてのデータベースでは、独自のカレンダー テーブルを追加すると便利です。各日付の行と、営業日などを示すいくつかの追加フィールドが含まれている必要があります。これにより、週末の問題だけでなく、祝日の問題も解消されます。その後、カレンダー表を参照するだけで、3 稼働日を簡単に設定できます。

カレンダー表

CalDate     Workday
04/09/2012      -1
05/09/2012      -1
06/09/2012      -1
07/09/2012       0
08/09/2012       0
09/09/2012      -1
10/09/2012      -1

暦日を追加する

だいたい

Private Sub NoDays_AfterUpdate()
Dim rs As Recordset
Dim db As Database

    Set db = CurrentDb

    If Not IsNull(Me.Start) Then
        dteDate = DateAdd("d", Me.NoDays, Me.Start)
        sSQL = "SELECT TOP 1 c.CalDate FROM Calendar c " _
             & "WHERE c.CalDate >#" _
             & Format(dteDate, "yyyy/mm/dd") _
             & "# And c.WorkDay = True"
        Set rs = db.OpenRecordset(sSQL)

        If rs.EOF() Then
            MsgBox "Please perform calendar maintenance"
        Else
            Me.Return = rs!CalDate
        End If
    Else
        MsgBox "Please enter start date"
    End If

End Sub
于 2012-09-02T18:51:20.257 に答える