如何在数据标签中将时间值格式化为HH:MM:SS [英] How to format timevalue to HH:MM:SS in datalabel

查看:134
本文介绍了如何在数据标签中将时间值格式化为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)));
如果mm <10,则MMM:=0& ToText(mm,0);
如果mm> 9则MMM:= ToText(mm,0);

ss:= Sec-(3600 * hh) - (60 * mm);
如果ss <10,那么SSS:=0& ToText(ss,0);
如果ss> 9 Then SSS:= ToText(ss,0);

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

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

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



谢谢

解决方案

您可以选择显示群组名称,并且您可以显示和格式化图表计算的汇总值,但不能提供自定义公式。这是不可能使用CR XI中的图表库。



这个问题的最终解决方法:


  1. 修改值公式以消除聚合函数。 (这是必要的,因为Crystal不允许在组名字段中使用聚合函数 - 参见#2。)

  2. 对于组名称,指定一个包含所需文本的公式显示在提升管。包括标签和格式化的值,以 Chr(13)&

  3. 配置提升板以显示标签,而不是值。

要应用此问题,您需要进行以下更改:


  1. 消除聚合函数。当然我不知道这是否可能使用您的设置。也许如果您使用的是DBMS,您可以使用SQL命令或存储过程来计算数据达到Crystal之前的总和。

  2. 将标签和值一起打印


如果这对您的应用程序不够好,您可以考虑 CRChart ,这是一个商业替代品,试图解决有时限制Crystal的图表库。 (我认为这太贵了。)我认为 @APPEND_DATATEXT 宏将允许您在提升板上放置自定义值,但您仍需要将摘要移动到服务器。


So i have a bar graph in crystal reports. On this graph i have a data label attached to each of the graphs that displays the value of the graph in seconds, which appears like so: What i would like to do is format this data-label into a time formatting. So for each bar in the graph it would have the data-label appear in the following format:

HH:MM:SS.

i am able to get the time formatting to appear using the following formula:

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

But what i am unsure of is how to implement this formula onto a data label.

Any help or suggestions are greatly appreciated.

Thank you

解决方案

You can choose to display the group name, and you can display and format the summarized value calculated by the chart, but you can't provide a custom formula. It just isn't possible using the chart library in CR XI.

My eventual workaround for this problem:

  1. Modify the value formula to eliminate the aggregate function. (This is necessary because Crystal won't allow an aggregate function in a group name field -- see #2.)
  2. For the group name, specify a formula with the text you want to display in the riser. Include both the label and the formatted value, separated by Chr(13) & Chr(10) to place them on separate lines.
  3. Configure the riser to display the label, not the value.

To apply this to your problem you'd need to make these changes:

  1. Eliminate the aggregate function. Of course I don't know if this will be possible using your setup. Perhaps if you're using a DBMS you could use a SQL command or a stored procedure to calculate the sum before the data reaches Crystal.
  2. Print the label and value together, either on the riser or the X-axis.

If that's not good enough for your application, you might consider CRChart, a commercial replacement which tries to address the sometimes-crippling limitations of Crystal's chart library. (I thought it was too pricey.) I think the @APPEND_DATATEXT macro would let you place a custom value on a riser, but you'd still need to move the summary to the server.

这篇关于如何在数据标签中将时间值格式化为HH:MM:SS的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆