【发布时间】:2015-08-09 19:29:17
【问题描述】:
所以基本上我有两张桌子。日期表和 statHoliday 表。 statholiday 表就像您在这个国家可以找到的所有假期一样,这很好。
- 我自动填充 myDate 表以获取每个星期一,这不是 stat-holiday。
- 我从 myDate 表中删除所有内容,然后在每次打开数据库时使用自动执行重新填充所有内容。
- 虽然它工作正常,但我正在寻找一种更有效的方法来执行此操作。我认为从表中删除所有内容并多年来更新需要时间。
- vba 中是否有针对假期的内置函数?
mydate 表如下所示:
the_date
---------
08-01-2015
15-01-2015
22-01-2015
29-01-2015
//stat-holiday table
name | Date
---------------------
New Year | 01-01-2015
Christmas| 25-12-2015
我的功能如下:
Function dateTblUpdate()
DoCmd.SetWarnings False
Dim dt As Date
Dim rs As DAO.Recordset
Dim db As DAO.Database
Set db = CurrentDb
Dim sqlS As String
sqlS = "Select Date as holi from statHolidaysTbl"
Set rs = db.OpenRecordset(sqlS)
DoCmd.RunSQL "DELETE FROM [date-table]"
For dt = #1/1/2010# To DateSerial(Year(Now), Month(Now), Day(Now))
If Weekday(dt) = 2 Then
Do While Not rs.EOF
If rs!holi <> dt Then
DoCmd.RunSQL "Insert into [date-table] (the_date) values(#" & dt & "#)"
End If
rs.MoveNext
Loop
rs.MoveFirst
End If
Next
DoCmd.SetWarnings True
End Function
【问题讨论】:
-
如果您的代码按预期工作,并且您正在寻找更好、更清洁和/或更有效的编码方式,您可能会对Code Review 感兴趣:)
-
您不需要每次都重新加载
date-table。使用查询LEFT JOIN日期表到假期表。然后你想要的星期一在查询行中statHolidaysTbl.Date Is Null
标签: sql ms-access vba ms-access-2003