按代码格式化公式?

时间:2009-10-13 13:34:30

标签: crystal-reports

我有以下公式作为交叉标签报告的分组:

{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之后出现。

任何人?

1 个答案:

答案 0 :(得分:1)

ToText函数对于这种事情非常有用,不需要循环。在Crystal的VB语法中:

Formula = ToText({Command.Year}, 0, "") & " " & ToText({Command.RF Period}, "00")

如果你描述的{Command.Year}和{Command.RF Period}是整数,这应该有用。