【发布时间】:2019-04-02 14:07:23
【问题描述】:
我已经能够在谷歌上搜索一些可以从计算中删除周末和节假日的代码,我更关心的是删除周末。
下面的代码完美运行,我认为你可以使用 WorkdayDiff(),但由于这是基于 DateAdd(),我认为它会更复杂。
基本上我有一个长度变化的表格,我让它为我计算截止日期,我希望它也能排除周末和节假日,如果它足够简单的话。非常感谢您的帮助!
主要目标:如果星期六和/或星期日包含在这些日期中,则减去额外的 1 或 2 天。
Private Sub Command2_Click()
DoCmd.SetWarnings False
DoCmd.OpenQuery "Delete_A", acViewNormal, acEdit
DoCmd.OpenQuery "Append_A", acViewNormal, acEdit
DoCmd.OpenQuery "Append_Date", acViewNormal, acEdit
Dim dbs As DAO.Database
Dim rst As DAO.Recordset
Dim dat As Date
Set dbs = CurrentDb
Set rst = dbs.OpenRecordset("select * from Table1 order by ID desc")
With rst
If Not .EOF Then
.MoveFirst
Do Until .EOF
If Not IsNull(!Due_date) Then
dat = !Due_date
Else
dat = DateAdd("d", -!Duration, dat)
.Edit
!Due_date = dat
.Update
End If
.MoveNext
Loop
End If
.Close
End With
Set rst = Nothing
Set dbs = Nothing
DoCmd.OpenQuery "Delete_A_Exp", acViewNormal, acEdit
DoCmd.OpenQuery "Append_A_Exp", acViewNormal, acEdit
'DoCmd.RunMacro "A4_Export"
End Sub
【问题讨论】:
-
如果 !Due_Date 不为空,记录没有任何反应是故意的吗?
-
是的,我正在填写空白到期日,如果他们在那里,他们应该留下。
-
减去假期是相当广泛的。如果您有一个假期表或一个单独的函数来测试一天是否是假期,我可以编写一个函数来减去忽略这些天数的天数。什么是假期很大程度上取决于您所在的地区。
-
是的,我可以建立一个假期表,你能写一个函数来检查这个表而不包括周末吗?
标签: sql vba date ms-access weekday