Graph 如何在datalabel中将时间值格式化为HH:MM:SS

Graph 如何在datalabel中将时间值格式化为HH:MM:SS,graph,crystal-reports,Graph,Crystal Reports,所以我在crystal reports中有一个条形图。在这个图上,我在每个图上都贴了一个数据标签,以秒为单位显示图的值,如下所示: 我想做的是将此数据标签格式化为时间格式。因此,对于图形中的每个条形图,数据标签将以以下格式显示: HH:MM:SS 我可以使用以下公式获得要显示的时间格式: local NumberVar Sec; local NumberVar ss; local NumberVar mm; local NumberVar hh; local StringVar SSS; loc

所以我在crystal reports中有一个条形图。在这个图上,我在每个图上都贴了一个数据标签,以秒为单位显示图的值,如下所示: 我想做的是将此数据标签格式化为时间格式。因此,对于图形中的每个条形图,数据标签将以以下格式显示:

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
localnumbervarsec;
局部数;
局部数mm;
局部数hh;
局部变量SSS;
局部变量MMM;
Sec:=Sum({GetAlarmSummaryDataSet2Response/GetAlarmSummaryDataSet2Result/Items/AlarmSummaryItem2.StopTime},{GetAlarmSummaryDataSet2Response/GetAlarmSummaryDataSet2Result/Items/AlarmSummaryItem2.Section});
hh:=Int(秒/3600);
毫米:=整数((秒/60)-(60*整数(秒/3600));
如果是mm9,那么MMM:=ToText(mm,0);
ss:=秒-(3600*hh)-(60*mm);
如果ss9,则SSS:=ToText(ss,0);
ToText(hh,0)&“&MMM&“:”&SSS
但我不确定的是如何在数据标签上实现这个公式

非常感谢您的帮助或建议


谢谢

您可以选择显示组名,也可以显示图表计算的汇总值并设置其格式,但不能提供自定义公式。在CXI席上使用图表库是不可能的。 我的最终解决方案是:

  • 修改值公式以消除聚合函数。(这是必要的,因为Crystal不允许在组名字段中使用聚合函数——请参见#2。)
  • 对于组名,指定一个公式,其中包含要在提升板中显示的文本。包括标签和格式化值,用
    Chr(13)&Chr(10)
    分隔,将它们放在单独的行中
  • 将提升板配置为显示标签,而不是值
  • 要将此应用于您的问题,您需要进行以下更改:

  • 消除聚合函数。当然,我不知道这是否可以使用您的设置。如果您使用的是DBMS,那么您可以使用SQL命令或存储过程在数据到达Crystal之前计算总和
  • 在提升板或X轴上同时打印标签和值
  • 如果你的应用程序还不够好,你可以考虑一个商业替代品,它试图解决水晶图表库有时的严重缺陷。(我认为它太贵了。)我认为宏可以让您在提升板上放置一个自定义值,但您仍然需要将摘要移动到服务器上