我有以下公式作为交叉标签报告的分组:
{Command.Year} & ' ' & {Command.RF Period}
年份是SmallInt,期间是TinyInt。
问题在于它在报告中显示为:
2,009.00 9.00
数据库值实际上是:
2009 9
我无法通过格式化删除小数位,因为它们在公式中。
最终我希望它是:
2009 09
编辑:
我找到了这个链接:http://www.kenhamady.com/form15.shtml
现在我的代码看起来像这段时间了:
WhileReadingRecords;
StringVar text := Totext ( {Command.RF Period} , 6 , "" ) ; //put your numeric field in this line
NumberVar end := length ( text ) ;
NumberVar clip :=
(if Val ( text [ end - 6 to end ] ) = 0 then 1 else 0 ) +
(if Val ( text [ end - 5 to end ] ) = 0 then 1 else 0 ) +
(if Val ( text [ end - 4 to end ] ) = 0 then 1 else 0 ) +
(if Val ( text [ end - 3 to end ] ) = 0 then 1 else 0 ) +
(if Val ( text [ end - 2 to end ] ) = 0 then 1 else 0 ) +
(if Val ( text [ end - 1 to end ] ) = 0 then 1 else 0 ) +
(if Val ( text [ end - 0 to end ] ) = 0 then 1 else 0 ) ;
text [ 1 to Length ( text ) - clip ]
但是,我不使用Crystal语言,我使用VB。如果不以1开头,如何在期间前附加0?
现在的问题是,9月(9日)出现在十月,十一月和十二月之后,因为按字母顺序排列的是9在1之后出现。
任何人?
答案 0 :(得分:1)
ToText函数对于这种事情非常有用,不需要循环。在Crystal的VB语法中:
Formula = ToText({Command.Year}, 0, "") & " " & ToText({Command.RF Period}, "00")
如果你描述的{Command.Year}和{Command.RF Period}是整数,这应该有用。