2011-10-03 67 views
6

所以我在水晶报表中有一个条形图。在这张图上,我有一个数据标签,附在每张图上,以秒为单位显示图的数值,如下所示: enter image description here 我想要做的是将此数据标签格式化为时间格式。因此,对于图表中的每个条,数据标签将以下列格式显示:如何在datalabel中将timevalue格式化为HH:MM:SS

HH:MM:SS。

我能够获得时间格式化使用下面的公式出现:

local NumberVar Sec; 
local NumberVar ss; 
local NumberVar mm; 
local NumberVar hh; 
local StringVar SSS; 
local StringVar MMM; 

Sec := Sum ({GetAlarmSummaryDataSet2Response/GetAlarmSummaryDataSet2Result/Items/AlarmSummaryItem2.StopTime}, {GetAlarmSummaryDataSet2Response/GetAlarmSummaryDataSet2Result/Items/AlarmSummaryItem2.Section}) ; 
hh := Int (Sec/3600); 
mm :=Int ((Sec/60)- (60* Int(Sec/3600))); 
If mm<10 then MMM := "0" & ToText (mm,0); 
If mm>9 Then MMM := ToText(mm,0) ; 

ss :=Sec-(3600 * hh) - (60 * mm) ; 
If ss<10 then SSS := "0" & ToText (ss,0); 
If ss>9 Then SSS := ToText(ss,0) ; 

ToText (hh,0) & ":" & MMM & ":" & SSS 

但是我不确定的是如何实现这个公式到数据标签。

任何帮助或建议,非常感谢。

谢谢

回答

1

您可以选择显示的组名,还可以显示和格式化通过图表计算汇总值,但是你不能提供自定义公式。在CR XI中使用图表库是不可能的。

我对这个问题的解决办法最终:

  1. 修改值公式来消除聚合函数。 (这是必要的,因为Crystal不允许在组名字段中使用聚合函数 - 请参阅#2。)
  2. 对于组名,请指定一个公式,其中包含要在提升器中显示的文本。同时包含标签和格式化值,用Chr(13) & Chr(10)分隔以将它们放在单独的行中。
  3. 配置提升板以显示标签,而不是值。

若要将此您的问题,你需要做这些改变:

  1. 消除聚合函数。当然,我不知道这是否可以使用您的设置。也许如果您使用的是DBMS,则可以使用SQL命令或存储过程在数据到达Crystal之前计算总和。
  2. 打印标签和值在一起,无论是在立管或X轴。

如果这不是你的应用足够好,你可能会考虑CRChart,它试图解决水晶的图表库有时是沉重的限制商业替代。 (我认为它太昂贵了。)我认为@APPEND_DATATEXT宏可以让你在riser上放置一个自定义值,但你仍然需要将摘要移动到服务器上。

相关问题