FASTREPORT4 人民币大写转合计函数时出错.

whxxr 2010-12-02 12:37:55

大写函数网址:http://www.2ccc.com/article.asp?articleid=3556

FASTREPORT sum函数:function sum(expr:variant;band:variant=0;flags:integer=0):variant

人民币大写转换:[MoneyCn([SUM(<frxDBDataset1."f_jfje">,MasterData1)])]

报错:

Could not convert variant of type(Array variant) into type (double)
FASTREPORT 4 如果是直接转换合计函数就会出错了。
...全文
130 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
牧童科技 2012-03-05
  • 打赏
  • 举报
回复
楼主解决了没有,我也遇到这样的问题,到现在不知道怎么解决
lyhoo163 2010-12-02
  • 打赏
  • 举报
回复
自已编写一个函数吧。
kye_jufei 2010-12-02
  • 打赏
  • 举报
回复
  不能转换的各种不同类型(数组变种)到(双)类型double...

Function NtoC(n0 :real) :String;
Function IIF(b :boolean; s1,s2:string):string;
begin //本函数在VFP和VB中均为系统内部函数
if b then IIF:=s1 else IIF:=s2;
end;
Const c = '零壹贰叁肆伍陆柒捌玖◇分角圆拾佰仟万拾佰仟亿拾佰仟万';
var L,i,n, code :integer;
Z :boolean;
s, st,st1 :string;
begin
s :=FormatFloat( '0.00', n0);
L :=Length(s);
Z :=n0<1;
For i:= 1 To L-3 do
begin
Val(Copy(s, L-i-2, 1), n, code);
st:=IIf((n=0)And(Z Or (i=9)Or(i=5)Or(i=1)), ', Copy(c, n*2+1, 2))
+ IIf((n=0)And((i<>9)And(i<>5)And(i<>1)Or Z And(i=1)),',Copy(c,(i+13)*2-1,2))
+ st;
Z := (n=0);
end;
Z := False;
For i:= 1 To 2 do
begin
Val(Copy(s, L-i+1, 1), n, code);
st1:= IIf((n=0)And((i=1)Or(i=2)And(Z Or (n0<1))), ', Copy(c, n*2+1, 2))
+ IIf((n>0), Copy(c,(i+11)*2-1, 2), IIf((i=2) Or Z, ', '整'))
+ st1;
Z := (n=0);
end;
For i := 1 To Length(st) do If Copy(st, i, 4) = '亿万' Then Delete(st,i+2,2);
NtoC := IIf( n0=0, '零', st + st1);
End;

5,392

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧