在fastreport中打印空白表格及小写金额转大写金额

原创 2014年10月17日 13:58:02

在fastreport中的code脚本中写如下代码:

 

var 
  PageLine: integer;       //在現在頁列印到第幾行 
  PageMaxRow: integer=15;  //設定每頁列數
  C_ToTal, C_JINE : STring;
  ToTal_Debit, Page_JinE, Total_Credit : Extended;  //Debit-借方 ,credit-贷方                                                   
  aString : Array [0..9] of String;
function GETDXRMB(money:string):string;
var
  i,j:integer;
  Numcount,Dotcount,stemp,stemp1,stemp2,sFinal:string;
begin
  aString[0]:= '零';     aString[1]:= '壹';
  aString[2]:= '贰';     aString[3]:= '叁';
  aString[4]:= '肆';     aString[5]:= '伍';
  aString[6]:= '陆';     aString[7]:= '柒';
  aString[8]:= '捌';     aString[9]:= '玖';
  Numcount:=money;
  Dotcount := '';
  stemp := '';
  stemp1 := '';
  stemp2 := '';
  sFinal := '';
  i:=pos('.',Numcount);
  if i<>0 then
  begin
    Dotcount:=copy(Numcount,i+1,length(Numcount)-1);
    numcount:=copy(numcount,1,i-1);
    if (dotcount<>'00')and (dotcount<>'0') then
    begin
      if (length(dotcount)=2) and (strtoint(copy(dotcount,2,1))<>0) then
        Dotcount:= aString[strtoint(copy(Dotcount, 1, 1))]+'角'+aString[strtoint(copy(Dotcount, 2, 1))]+'分'
      else
        Dotcount:= aString[strtoint(copy(Dotcount, 1, 1))]+'角'
    end
    else
     dotcount:='';
  end;

  if length(numcount)> 8 then stemp:=copy(numcount,1,length(numcount)-8);//亿
  if (stemp<>'') and (strtoint(stemp)>0) then sFinal:=sFinal+GetNumstring(strtoint(stemp))+'亿';

  if Length(Numcount) > 4 then sTemp:= copy(Numcount,1,length(numcount)-4); //万
  if (sTemp <> '') and (strtoint(sTemp) <> 0) Then sFinal:= sFinal+ GetNumString(strtoint(sTemp))+'万';
  sFinal:= sFinal + GetNumString(strtoInt(copy(Numcount,1,length(numcount))));
  sTemp:='';
  j:=Length(sFinal);
  i:=1;
  while i<j do
  begin
    sTemp1:=copy(sFinal,i,2);
    if i<j then sTemp2:=copy(sFinal,i+2,2);
    if sTemp1<>'零' Then sTemp:= sTemp + sTemp1
    else if (sTemp<>'') and (sTemp1='零') and (sTemp2<>'万') and (sTemp2<>'亿') and (sTemp2<>'零') and (sTemp2<>'') and (i<>1) and (i<Length(sFinal)) then sTemp:=sTemp+sTemp1;
    i:=i+2;
  end;

  sFinal:= sTemp + '元';
  if Dotcount <> '' Then
    sFinal:=sFinal+Dotcount
  else
    sFinal:=sFinal+'整';
  Result :=sFinal;
end;

function getNumstring(inum:integer):string;
var
  i:integer;
  s1temp,stemp,sreturn:string;
begin
  aString[0]:='零';aString[1]:='壹';
  aString[2]:='贰';aString[3]:='叁';
  aString[4]:='肆';aString[5]:='伍';
  aString[6]:='陆';aString[7]:='柒';
  aString[8]:='捌';aString[9]:='玖';
  s1temp := '';
  stemp := '';
  sreturn := '';
  s1temp:='0000'+inttostr(iNum);
  sTemp:=copy(s1temp,length(inttostr(inum))+1,4);
  for i:=1 To 4 do
  begin
    if copy(sTemp,i,1) = '0' Then
    begin
      sReturn:= sReturn+'零';
    end
    else
    begin
      sReturn:=sReturn+aString[strtoInt(copy(sTemp,i,1))];
      case i of
        1: sReturn:= sReturn+'仟';
        2: sReturn:= sReturn+'佰';
        3: sReturn:= sReturn+'拾';
      end;
    end;
  end;
  Result:=sReturn;
end;
     
 
procedure MasterData1OnBeforePrint(Sender: TfrxComponent);
begin
 PageLine := <Line> mod PageMaxRow; 
  if (PageLine = 1) and (<line> > 1) then   
    Engine.newpage;
  child1.visible := False; 
end;

procedure Footer1OnBeforePrint(Sender: TfrxComponent);
var i:integer;                              
begin
  i := iif(PageLine=0, PageMaxRow, PageLine); 
  child1.visible := True;
  while i < PageMaxRow do
  begin   
    i := i + 1;
   Engine.ShowBand(Child1);  //印空白表格
             
  end;
  child1.visible := False;
   
  PageFooter1.Visible:=False;

  C_JinE := GETDXRMB(FloatToStr(Page_JinE));
  C_ToTal := GETDXRMB(FloatToStr(Total_Debit));

  Memo10.Text:=C_Total;
  Memo36.Text:=FormatFloat('#0.00',Total_Debit);
  Memo4.Text:=FormatFloat('#0.00',Total_Credit);                               
   
  PageFooter1.Height:=0;                                               
end;

procedure PageFooter1OnAfterPrint(Sender: TfrxComponent);
begin
  Page_JinE := 0; 
end;

procedure MasterData1OnAfterPrint(Sender: TfrxComponent);
begin
  Page_JinE := Page_JinE + <frxDB_Detail."DEBITS_MONEY">;
  Total_Debit := Total_Debit + <frxDB_Detail."DEBITS_MONEY">;
  Total_Credit := Total_Credit + <frxDB_Detail."Credits_MONEY">;                                                                             
end;

procedure PageFooter1OnBeforePrint(Sender: TfrxComponent);
begin
  C_JinE := GETDXRMB(FloatToStr(Page_JinE)); 
end;

begin

end.

FastReport4小写金额转大写金额

  • 2014年03月07日 15:26
  • 4KB
  • 下载

在fastreport里转换金额大小写

在fastreport的pascalscript里面我没有搞明白怎么调用sysutil
  • ddlucky
  • ddlucky
  • 2014年11月13日 15:48
  • 1437

Java将小写金额转换成大写

public class Test { private static final String UNIT = "万千佰拾亿千佰拾万千佰拾元角分"; private static final St...
  • leayefang
  • leayefang
  • 2016年11月09日 13:19
  • 1179

SQL人民币小写金额转大写

--1、人民币小写金额转大写(第一版) ==================================================================== -- Title:...
  • tlammon
  • tlammon
  • 2016年04月05日 22:03
  • 1449

C#人民币金额大写转换

人民币金额大小写转换,三行代码 //完善了一下查询到的方法,支持小数,保留2位小数 完善了一下查询到的方法,支持小数,保留2位小数 public string NumGetStr(double Nu...
  • CommandBaby
  • CommandBaby
  • 2015年11月28日 14:00
  • 2518

java实现金钱数字转大写

private static final char [] ChineseNum ={'零','壹','贰','叁','肆','伍','陆','柒','捌','玖'}; private static ...
  • qiumin333
  • qiumin333
  • 2016年11月25日 19:55
  • 2810

C#金额小写转大写

public string ConvertMoney(decimal Money) { //金额转换程序 string MoneyNum...
  • lucky51222
  • lucky51222
  • 2014年05月20日 18:10
  • 1679

jquery金额小写转大写

/** * 数字转中文 * @param dValue * @returns */ function chineseNumber(dValue) { var maxDec = 2...
  • baidu_28678737
  • baidu_28678737
  • 2015年07月03日 14:52
  • 1938

C# 人民币金额转大写

using System; namespace DotNet.Utilities { /// /// Rmb 的摘要说明。 /// public class...
  • zuoyefeng1990
  • zuoyefeng1990
  • 2017年04月18日 23:37
  • 209

JAVA科学计数法,金额数字,转换为中文大写字

java操作金额
  • wangyonglin1123
  • wangyonglin1123
  • 2016年04月28日 13:46
  • 1779
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:在fastreport中打印空白表格及小写金额转大写金额
举报原因:
原因补充:

(最多只允许输入30个字)