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 编辑过]
欢迎光临 赛捷软件论坛 (http://sagesoft.cn/bbs/) | Powered by Discuz! 7.2 |