Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Date 在组和图表水晶报表上显示结束日期_Date_Crystal Reports - Fatal编程技术网

Date 在组和图表水晶报表上显示结束日期

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日。如果我在没

我有一个Crystal Reports,它按日期范围提取数据,并按周分组。数据也显示在图表中。一切正常。然而,我遇到了一个问题

当我按周分组时,它会在分组和图表中显示开始日期。我想显示结束日期。我写了一个公式来解决这个问题,但是,由于某些原因,日期被取消了:

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字段替换它。今天只是一个简单的例子。