1.在水晶报表中建立一个转换方法 DecimalToWords
Function (numbervar decimals) local stringVar array _smallNumbers := ["ZERO", "ONE", "TWO", "THREE", "FOUR", "FIVE", "SIX", "SEVEN", "EIGHT", "NINE", "TEN", "ELEVEN", "TWELVE", "THIRTEEN", "FOURTEEN", "FIFTEEN", "SIXTEEN", "SEVENTEEN", "EIGHTEEN", "NINETEEN"]; local stringVar array _tens := ["", "", "TWENTY", "THIRTY", "FORTY", "FIFTY", "SIXTY", "SEVENTY", "EIGHTY", "NINETY"]; local stringVar array _scaleNumers := ["", "THOUSAND", "MILLION", "BILLION" ]; stringVar combined := _smallNumbers[1]; if decimals <> 0 then ( numberVar i := 1; numberVar array digitGroups := [0,0,0,0]; for i := 1 to 4 step 1 do ( digitGroups := decimals mod 1000; decimals := Int(decimals / 1000); ); stringVar array groupText := ["","","",""]; for i:=1 to 4 step 1 do ( numberVar hundreds := Int(digitGroups / 100); numberVar tensUnits := digitGroups mod 100; if hundreds <> 0 then ( groupText := groupText + _smallNumbers[hundreds+1] + " HUNDRED"; if tensUnits <> 0 then groupText := groupText + " "; ); numberVar tens := Int(tensUnits / 10); numberVar units := tensUnits mod 10; if tens >= 2 then ( groupText := groupText + _tens[tens+1]; if units <> 0 then groupText := groupText + "-" + _smallNumbers[units+1]; ) else if tensUnits <> 0 then groupText := groupText + _smallNumbers[tensUnits +1] ); combined := groupText[1]; for i:=2 to 4 step 1 do ( if digitGroups <> 0 then ( stringVar prefix := groupText + " " + _scaleNumers; if Length(combined) <> 0 then prefix := prefix+ " "; combined := prefix + combined; ); ); ); combined; 2.然后在水晶报表中建一个 公式字段 TotalEg DecimalToWords ({#Total}) //其中Total是个汇总字段 3.把上一步建的公式字段TotalEg拖到报表需要的位置 [此帖子已被 stone 在 2009-6-24 11:58:57 编辑过] |