我正在使用下面的代码,该代码位于本网站上。它以某种方式起作用,但是当FromDate在星期五降落时,因为它又增加了另一天,所以无法正常工作。
请参见屏幕截图以进行演示。
代码本身有什么问题?
= (DateDiff(DateInterval.day,Fields!FromDate.Value,Fields!UntilDate.Value)+1)
- (DateDiff(DateInterval.WeekOfYear,Fields!FromDate.Value,Fields!UntilDate.Value)*2)
- IIF(Weekday(Fields!FromDate.Value,1) = 1,1,0)
- IIF(Weekday(Fields!FromDate.Value,1) = 7,1,0)
- IIF(Weekday(Fields!UntilDate.Value,1) = 1,1,0)
- IIF(Weekday(Fields!UntilDate.Value,1) = 7,1,0)
答案 0 :(得分:1)
代码正常。问题在于,您的计算机在“地区”和“语言”设置中使用的一周的第一天可能不同于在其(或我的)代码上创建的计算机。
要进行测试,请将文本框设置为=WEEKDAY(TODAY)
。使用此代码的计算机的星期日为1,今天(星期三)为 4 。我的猜测是您得到3。
如果一周的第一天是星期一,则需要将工作日更改为6和7,而不是当前使用的1和7。
= (DateDiff(DateInterval.day,Parameters!START.Value,Parameters!END.Value)+1)
- (DateDiff(DateInterval.WeekOfYear,Parameters!START.Value,Parameters!END.Value)*2)
- IIF(Weekday(Parameters!START.Value,1) = 6,1,0)
- IIF(Weekday(Parameters!START.Value,1) = 7,1,0)
- IIF(Weekday(Parameters!END.Value,1) = 6,1,0)
- IIF(Weekday(Parameters!END.Value,1) = 7,1,0)
如果是星期六,则需要在周末使用1和2。
答案 1 :(得分:0)
解决方案
在我的情况下,我必须引入CDate(format(Fields!FromDate.Value,"MM-dd-yyyy"))
才能正确计算天数
I had to use the CDATE() in the code:
=(DateDiff(DateInterval.day,CDate(format(Fields!FromDate.Value,"MM-dd-yyyy")),
CDate(format(Fields!UntilDate.Value,"MM-dd-yyyy")))+1)
-(DateDiff(DateInterval.WeekOfYear,CDate(format(Fields!FromDate.Value,"MM-dd-yyyy")),
CDate(format(Fields!UntilDate.Value,"MM-dd-yyyy")))*2)
- IIF(Weekday( CDate(format(Fields!FromDate.Value,"MM-dd-yyyy")),1) = 1,1,0)
- IIF(Weekday( CDate(format(Fields!FromDate.Value,"MM-dd-yyyy")),1) = 7,1,0)
- IIF(Weekday( CDate(format(Fields!UntilDate.Value,"MM-dd-yyyy")),1) = 1,1,0)
- IIF(Weekday( CDate(format(Fields!UntilDate.Value,"MM-dd-yyyy")),1) = 7,1,0)