Date 在组和图表水晶报表上显示结束日期
我有一个Crystal Reports,它按日期范围提取数据,并按周分组。数据也显示在图表中。一切正常。然而,我遇到了一个问题 当我按周分组时,它会在分组和图表中显示开始日期。我想显示结束日期。我写了一个公式来解决这个问题,但是,由于某些原因,日期被取消了:Date 在组和图表水晶报表上显示结束日期,date,crystal-reports,Date,Crystal Reports,我有一个Crystal Reports,它按日期范围提取数据,并按周分组。数据也显示在图表中。一切正常。然而,我遇到了一个问题 当我按周分组时,它会在分组和图表中显示开始日期。我想显示结束日期。我写了一个公式来解决这个问题,但是,由于某些原因,日期被取消了: totext(cdate(dateadd("d",6,date({CallDate}))),"MM/dd/yyyy") 例如,我的日期范围为2013年10月11日至2013年11月23日。如果我在没
totext(cdate(dateadd("d",6,date({CallDate}))),"MM/dd/yyyy")
例如,我的日期范围为2013年10月11日至2013年11月23日。如果我在没有公式的情况下运行此程序,它将按如下方式分组:
2013年10月11日
2013年11月17日
我想展示一下
2013年11月16日
2013年11月23日
如果我用上面的公式运行,我会得到以下输出:
2013年11月20日
2013年11月27日
我甚至不知道他们的公式是如何计算20和26的。有没有关于如何解决这个问题的建议?这有点棘手。CR假定星期日为一周的第一天,除非另有规定。因此,例如,在默认CR周中,一周的第一天是星期一第2天,此公式将为您提供一周的第一天:
If DayOfWeek({@Today}) = 2 Then
{@Today}
Else If DayOfWeek({@Today}) = 3 Then
dateadd ("d",-1,{@Today})
Else If DayOfWeek({@Today}) = 4 Then
dateadd ("d",-2,{@Today})
Else If DayOfWeek({@Today}) = 5 Then
dateadd ("d",-3,{@Today})
Else If DayOfWeek({@Today}) = 6 Then
dateadd ("d",-4,{@Today})
Else If DayOfWeek({@Today}) = 7 Then
dateadd ("d",-5,{@Today})
Else If DayOfWeek({@Today}) = 1 Then
dateadd ("d",-6,{@Today})
为了让您知道一周的最后一天,也就是正常工作周的周日,以下公式将为您提供:
If DayOfWeek({@Today}) = 1 Then
dateadd("d", +6, {@Today})
Else If DayOfWeek({@Today}) = 2 Then
dateadd("d", +5, {@Today})
Else If DayOfWeek({@Today}) = 3 Then
dateadd("d", +4, {@Today})
Else If DayOfWeek({@Today}) = 4 Then
dateadd ("d",+3,{@Today})
Else If DayOfWeek({@Today}) = 5 Then
dateadd ("d",+2,{@Today})
Else If DayOfWeek({@Today}) = 6 Then
dateadd ("d",+1,{@Today})
Else If DayOfWeek({@Today}) = 7 Then
{@Today}
所以你的日子是:
星期日1
星期一2
星期二3
星期三4
星期四5
星期五6
星期六7
因此,在您的情况下,计算结束日期的公式应为:
totext(cdate(dateadd("d",+6,date({CallDate}))),"MM/dd/yyyy")
似乎更容易将日期转换为周数值,然后添加到周结束日期所需的天数 dateaddww,datepartww,{Command.REPORTDATE}-1,dateyear{Command.REPORTDATE},01,01-dayofweekdateyear{Command.REPORTDATE},01,01+7 如果希望一周在不同的日期结束,请调整公式末尾的+7
事实上,我可以使用上面我发布的公式进行分组。我唯一补充的一点是它需要一个组排序导出。按升序对日期排序。然后分组就可以了。唯一的问题是,例如,我的数据始于2013年6月11日,因此结束日期应为2013年9月11日。它将增加6天,第一行的结束日期始终为开始日期+6。我希望它是标准的星期天-星期六。然后你用我上面的公式。您检查DayOfWeek,然后相应地添加到星期六。我应该用CallDate字段替换@Today还是实际的今天的日期?用CallDate字段替换它。今天只是一个简单的例子。