【Access小品】周而复始--获取每月各周日期范围示例-煮江品茶
Access软件网QQ交流学习群(群号码198465573),欢迎您的加入!
首页 >技术文章> 源码示例


【Access小品】周而复始--获取每月各周日期范围示例

发表时间:2015/4/27 12:21:41 评论(0) 浏览(8637)  评论 | 加入收藏 | 复制
   
摘 要:【Access小品】周而复始 -- 获取每月各周日期范围示例
正 文:

  最近有版友问到统计每月中各周的数据问题,这个问题的解决要点是如何获得每月中各周的日期范围。而获得各周的日期范围的难点,又在于第一周和最后一周可能不是完整的七天。时间的流逝是周而复始的,但由于以月度和周两个时间度量来计算,就可能造成某一种时间度量(周)在另一种度量(月)的约束下不一定周而复始。注意这里说的不能周而复始的前提是因为另一种度量的约束,也就是说没有这种约束,依然是周而复始的。

  前面我们讨论周在月中不完全能周而复始的原因并不重要,就本问题而言最重要的是观察到第一周和最后一周可能不是完整的七天。有了这个对问题的观察,我们也就有了解决问题的思考方向,由此入手也就不难解决问题。在本示例中主要采用一个自定义的函数来处理问题,这个自定义函数大体可以按如下代码编写:

Public Function WeekDateArr(ByVal y As Integer, ByVal m As Integer) As Variant
    '功能:返回当前月度中各周的日期范围
    '参数:y -- 年度, m -- 月度
    Dim monthday0 As Date, monthday1 As Date
    Dim weekday0 As Date, weekday1 As Date
    Dim Arr() As String
    Dim i As Integer
    
    monthday0 = DateSerial(y, m, 1)
    monthday1 = DateSerial(y, m + 1, 0)
    
    '第一周日期范围
    weekday0 = monthday0
    weekday1 = DateAdd("d", 7 - Weekday(weekday0, vbMonday), weekday0)
    ReDim Preserve Arr(1, 0)
    Arr(0, 0) = weekday0
    Arr(1, 0) = weekday1
    i = 0
    
    Do While weekday1 < monthday1
        weekday0 = DateAdd("d", 1, weekday1)
        weekday1 = DateAdd("d", 6, weekday0)
        If weekday1 > monthday1 Then weekday1 = monthday1
        i = i + 1
        ReDim Preserve Arr(1, i)
        Arr(0, i) = weekday0
        Arr(1, i) = weekday1
    Loop
    
    WeekDateArr = Arr
End Function
 

示   例

点击下载此附件
 

视   图


Access软件网交流QQ群(群号:198465573)
 
 相关文章
如何得到某年每个月的第一天是星期几  【UMVsoft整理  2007/12/3】
Access取得一个季度的第一天或最后一天;Access获取季度第...  【Victor Duane  2011/10/27】
【access源码示例】测算星期周数的初始日期与末尾日期\判断第几...  【红尘如烟  2011/11/12】
本年年初与年末日期\当年的第一天与最后一天\本年本月第一天与本月最...  【红尘如烟  2012/4/5】
【译文】在一个日期范围内匹配记录  【周芳  2012/4/21】
【Access源码示例】数字区间段查询示例,开始数字至截止数字区段...  【麥田  2013/3/12】
【Access示例】日期范围在星期一至星期天  【缪炜  2013/7/12】
常见问答
技术分类
相关资源
文章搜索
关于作者

煮江品茶

文章分类

文章存档

友情链接