0

我是全新的访问并尝试“即时学习”。我用的是2003版本

我有一个记录员工病假的数据库,tbls 是 tblLeaveEvent、tblEmployeeDetails、tblLeaveType。

我有一个表格来记录休假,所有员工详细信息都通过查询填充到表格中。我从日历中选择休假开始日期,从下拉列表中选择休假类型,从列表 0-5 中选择休假持续时间。

我的问题是,如果有人在星期四请病假并说他们将离开 3 个工作日,我的表格将记录为星期四请假 3 天。

我如何让数据库记录周四的 1 天休假、周五的 1 天休假和周一的 1 天休假?

我是否需要更改设计并选择结束日期而不是#days 持续时间?如果我确实从日历中选择了一个结束日期,我该如何忽略 w/ends?

希望有一个非常简单的解决方案来解决我的问题。谢谢,大卫

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 回答