【问题标题】:How do I make an event entry repeat over consecutive days?如何让一个事件条目连续几天重复?
【发布时间】:2012-09-05 17:06:14
【问题描述】:

我刚接触并尝试“即时学习”。我用的是2003版

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

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

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

如何让数据库记录周四放假 1 天、周五放假 1 天、周一放假 1 天?

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

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

【问题讨论】:

    标签: ms-access


    【解决方案1】:

    对于几乎所有依赖日期的数据库,您自己的日历表是​​一个方便的补充。它应该包含每个日期的一行和一些额外的字段来指示工作日等。这不仅可以解决周末问题,还可以解决公共假期问题。那么设置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
    

    【讨论】:

    • 谢谢 Remou 你是说我应该添加一个名为日历的新表吗?我不明白这如何解决我的问题。能否请您详细说明。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2020-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-19
    • 1970-01-01
    • 1970-01-01
    • 2016-09-21
    相关资源
    最近更新 更多