Office中国论坛/Access中国论坛

标题: 如何计算如下日期值 [打印本页]

作者: fine88888888    时间: 2012-4-10 09:26
标题: 如何计算如下日期值
已知起始日期及终止日期,,计算这段日期除去星期天及星期六下午的日期天数。。我知道除去星期天可用=workday([起始日期],[终止日期]),,,但再除去星期六下午如何计算???
作者: Henry D. Sy    时间: 2012-4-10 09:49
最笨的办法就是判断是不是星期六,如是扣掉0.5天
作者: fine88888888    时间: 2012-4-10 11:23
是不是判断此时间段有N个星期六,然后减去N X 0.5 天??怎么判断有N个星期六呢??
作者: Henry D. Sy    时间: 2012-4-10 12:18
fine88888888 发表于 2012-4-10 11:23
是不是判断此时间段有N个星期六,然后减去N X 0.5 天??怎么判断有N个星期六呢??

传例子吧
作者: Henry D. Sy    时间: 2012-4-10 13:14
  1. Public Function totalWorkday(dateA As Date, dateB As Date) As Single
  2.     Dim i As Integer
  3.     Dim j As Integer
  4.     Dim k As Integer
  5.     Dim l As Integer
  6.       
  7.     i = DateDiff("d", dateA, dateB)
  8.     For j = 0 To i
  9.         If Weekday(dateA + j) = 7 Then
  10.             k = k + 1
  11.         End If
  12.         If Weekday(dateA + j) = 1 Then
  13.             l = l + 1
  14.         End If
  15.     Next
  16.     totalWorkday = i + 1 - l - k * 0.5
  17. End Function
复制代码

作者: aslxt    时间: 2012-4-10 13:18
excel的workday已经去掉了周日和周六的呀,access没有workday函数啊
作者: fine88888888    时间: 2012-4-10 13:38
请见附例报表红色字段,,原来这样可以除掉星期天了,但现在要除去星期六下午,,不知如何计算了!!
作者: Henry D. Sy    时间: 2012-4-10 14:10
fine88888888 发表于 2012-4-10 13:38
请见附例报表红色字段,,原来这样可以除掉星期天了,但现在要除去星期六下午,,不知如何计算了!!

5楼的不行吗
作者: Henry D. Sy    时间: 2012-4-10 14:12
fine88888888 发表于 2012-4-10 13:38
请见附例报表红色字段,,原来这样可以除掉星期天了,但现在要除去星期六下午,,不知如何计算了!!

附件只是一个空报表,没有数据源的。
作者: fine88888888    时间: 2012-4-10 15:10
5楼的代码放在哪呢?加载报表时??可是报表的数据是分组的,,统计每单货的开始时间及完成时间总和(除去星期天和星期六下午)。。公司现在实行5天半制,,难搞啊,,数据库比例大,只能传报表了。。还有没有其他办法啊!!以前只除去星期天用这个=workday([起始日期],[终止日期])就行了!!
作者: Henry D. Sy    时间: 2012-4-10 15:21
fine88888888 发表于 2012-4-10 15:10
5楼的代码放在哪呢?加载报表时??可是报表的数据是分组的,,统计每单货的开始时间及完成时间总和(除去星 ...

不清楚您的数据结构是怎样的,
最好能传示例

试试用查询得到工作天数,然后用该查询作为报表的记录源!
作者: roych    时间: 2012-4-10 16:22
fine88888888 发表于 2012-4-10 13:38
请见附例报表红色字段,,原来这样可以除掉星期天了,但现在要除去星期六下午,,不知如何计算了!!

奇了怪了,数据源都没看得到。
作者: fine88888888    时间: 2012-4-10 17:05
重新上传例子,,请帮解决问题如下:
1 把星期六下午半天除去,,新值应为14天及15.5天。。
作者: Henry D. Sy    时间: 2012-4-10 17:41
fine88888888 发表于 2012-4-10 17:05
重新上传例子,,请帮解决问题如下:
1 把星期六下午半天除去,,新值应为14天及15.5天。。

[attach]48946[/attach]


作者: Henry D. Sy    时间: 2012-4-10 17:44
建议先用查询计算每组的统计工作天数。
然后再用查询作为报表记录源,否则当每组不止一条记录的话,您这种形式还是有问题的。
作者: Henry D. Sy    时间: 2012-4-10 18:00
[attach]48947[/attach]


作者: Henry D. Sy    时间: 2012-4-10 18:05
[attach]48948[/attach]
请把14,16,17楼的附件全部下载,然后比对一下!
作者: fine88888888    时间: 2012-4-11 09:10
{:soso_e113:}谢谢版主帮我解决问题,我的开始日期与完成日期是一致的,也是分组的。谢谢了哈~~
作者: zrj898    时间: 2012-4-11 23:38
本帖最后由 zrj898 于 2012-4-11 23:41 编辑

实际日期时间数据是个有个起点的毫秒值,每段时间、每个时间点都是个毫秒值,请从这思考问题。




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3