我有一个表cz 里面有字段xm , zh,je,sfz        四个字段,中文字段意思就是:姓名,帐号,金额,身份证,je字段是数值型,其它三个都是文本型,我现在想把这表里的数据输出为TXT,但从EXCEL表里导入到MDB数据库金额是这样的形式,如:23.57   就是这样的金额,如果表里有这样的一行数据姓名   帐号               金额              身份证张三   63012523384938293  340.00            510282198510152331但格式要必须是这样输出为TXT:0001张三      63012523384938293000000034000510282198510152331也就是姓名前自动加四位数的序号,金额小数后的要保留,小数点去掉就行了,帐号后面是7个0补上不知如何转换格式,是浮点转字符吗?还是????小弟不才,请各位大侠给出输出按钮的代码还有就是要判断如果没有帐号,自动用空格进行补齐,像下面这样的格式:0001张三                       000000034000510282198510152331
如果觉得分不够,我可以加分,只要我有~_~
大概就是这样的TXT:
0001张三      63012523384938293000000034000510282198510152331
0002李四                       000000034000510282198510152331   这一行是没有帐号要这样输出
01787白连德                    000000000000630121197607077116   这一行是没有帐号和金额要这样输出我的QQ1185394991

解决方案 »

  1.   

    format格式输出  那个小数点你可以先把那个值乘以个数变成整数
      

  2.   

    用FormatFloat来格式化就好,金额那个点,可以在所有字符连接完后再删除那个点FormatFloat('000.00',Value); //340-340.00FormatFloat('0000000.',Value); //0-0000000 //63012523384938293-63012523384938293
      

  3.   

    读取Excel的时候,设个变量i,记录第几次读取
    xm := rightstr('0000'+ inttostr(i),4)  ,
     zh := copy(读到的证件号+ '0000000',1,(需要证件号的长度)) ,
     je := inttostr(strtoint(读到的金额) *100)   ,
     sfz  无需处理
     
     你再拼一下就Ok,就用到左截取和右截取的函数而已
      

  4.   

    var
      tfile: TextFile;
      i: Integer;begin
        assignfile(tfile,'c:\dfgz.txt');
            rewrite(tfile);
        begin
               Edit1.Text:= ADOQuery1.FieldByName('金额').AsString;        Edit1.Text:=format('%d%d',[edit1.text]);        for   i:=1   to   ADOQuery1.recordcount   do
            begin
    writeln(tfile,ADOQuery1.fieldbyname('姓名').AsString + #9+#9  + ADOQuery1.fieldbyname('帐号').AsString  +'0000000'+ ADOQuery1.fieldbyname('金额').AsString + ADOQuery1.fieldbyname('身份证').AsString );
    ADOQuery1.fieldbyname('BD_MName').AsString+ #9 +'123'+ #9 + '[' + #9 + ']');          ADOQuery1.next;
            end;
              application.MessageBox('恭喜你,工资数据生成成功,请上传到服务器代发','信息提示',mb_ok);
            //showmessage('输出成功');
      end;
    end;
    这是我的输出按钮,如果把金额进行格式转换成字符呢,去掉“.“ 这个小圆点
      

  5.   

    var
      tfile: TextFile;
      i: Integer;begin
      assignfile(tfile,'c:\dfgz.txt');
      rewrite(tfile);
      begin  for i:=1 to ADOQuery1.recordcount do
      begin
    writeln(tfile,ADOQuery1.fieldbyname('姓名').AsString + #9+#9 + ADOQuery1.fieldbyname('帐号').AsString +'0000000'+ ADOQuery1.fieldbyname('金额').AsString + ADOQuery1.fieldbyname('身份证').AsString );  ADOQuery1.next;
      end;
      application.MessageBox('恭喜你,工资数据生成成功,请上传到服务器代发','信息提示',mb_ok);
      //showmessage('输出成功');
      end;
    end;
    这是我的输出按钮,如果把金额进行格式转换成字符呢,去掉“.“ 这个小圆点,刚才我发错了,这个才是我按钮里的代码,要如何修改才能把金额的点给去除掉呢,代码该如何写
      

  6.   

    var
      TemIntJE: integer;
      TemStrJE: string;
      
      TemJE:= ADOQuery1.fieldbyname('金额').Asinteger;
      TemStrJE := inttostr(TemIntJE*100 ); 
      
      建议不要直接去小数点,如果传了个10.1,它的金额还是合法的,但你的程序就SB了
      

  7.   

    输出为TXT不能有小数点,小数点前后的东西都要啊
      

  8.   

    去掉'.'是吧方法1. pos定位, 然后copy方法2. 使用 StringReplace函数将'.'替换成''procedure TForm1.btn1Click(Sender: TObject);
    var
      sTem: string;
    begin
      sTem := '898899388485.878991901';
      sTem := StringReplace(sTem,'.','',[rfReplaceAll]);
      ShowMessage(sTem);
    end;
      

  9.   


    StringReplace(ADOQuery1.fieldbyname('金额').AsString,'.','',[])