在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:37
  • 1636

FastReport 金额转大写

function atoc(a: string): string; var   string1, string2, string3, string4, ch1, ch2, s, s1, rmb: ...
  • ProgramSir
  • ProgramSir
  • 2014-07-23 15:20:18
  • 488

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

var    PageLine: integer;       //在現在頁列印到第幾行    PageMaxRow: integer=15;  //設定每頁列數   C_ToTal, C_...
  • 9807146wang
  • 9807146wang
  • 2014-10-17 13:58:02
  • 1036

FastReport小写金额转大写

  • 2012年10月20日 11:39
  • 5KB
  • 下载

FastReport报表控件内置函数介绍之字符处理函数

概述:本文介绍了FastReport报表控件的字符处理函数。 合计函数   算术运算函数及其他 字符处理函数 Str().将包含的数值转换成字符。 Copy(, , ).按长度返回...
  • zisongjia
  • zisongjia
  • 2017-09-02 16:14:42
  • 1708

报表fastreport

本节主要讲述FastReport报表系统的基本概念、基本操作方法、基本控件使用等内容。 基本概念 最主要的概念是FastReport报表的组成方式和控件主要用途,它一般包括以下方面:  *页面(P...
  • fjseryi
  • fjseryi
  • 2013-10-10 10:25:03
  • 3798

Excel数字小写金额转换汉字大写金额公式的简单设置

_________ Excel数字小写金额转换汉字大写金额公式的简单设置  华能呼伦贝尔能源有限公司 卞学敏 Excel数字小写金额转换汉字大写金额公式在会计工作中是经常应用到的,它能提高工作效...
  • mfkpie
  • mfkpie
  • 2014-05-31 23:19:24
  • 18783

jquery、js 金额小写转成大写

jquery、js 金额小写转成大写,本代码完成了基本的转换,并不是最完整的,可根据需求进行修改,比如是否可以有小数点,(金额小数点也就两位,精确到分)...
  • u012402177
  • u012402177
  • 2016-07-29 11:43:25
  • 1489

FastReport经验

1.FastReport中如果访问报表中的对象? 可以使用FindObject方法。 TfrxMemoView(frxReport1.FindObject(’memo1′)).Text:=’Fas...
  • zhongguomao
  • zhongguomao
  • 2016-10-18 09:04:06
  • 638
收藏助手
不良信息举报
您举报文章:在fastreport中打印空白表格及小写金额转大写金额
举报原因:
原因补充:

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