问题如下: 
var 
s,t:string; 
begin 
   s:='select * from table1 where djbh='+quotedstr(edtdjbh.Text); 
   GetData(s,cdsdr);//将运行S语句得出的结果集放到cdsdr中 
   if cdsdr.RecordCount>=1 then 
   begin 
     cdsdr.ReadOnly := true; 
   end 
   else 
   begin 
     for i:=1 to query1.recordcount do 
     begin 
       t:=query1.Fields[0].AsVariant; //
       t:=formatfloat('00000 00000 00000 00000',strtofloat(t)); //这里还想到用formatstring,但是不知道具体怎么用
       cdsdr.Append; 
       cdsdr.FieldByName('djbh').AsVariant:=edtdjbh.Text; 
       cdsdr.FieldByName('zd1').AsVariant:=quotedstr(t); 
       query1.Next; 
     end; 
   end;
end 主要代码就是这样的。 
举个例子:我这里的query1.Fields[0].AsVariant值是09000245001000164116这样一个20位的值,我是想将它设置为格式09000 24500 10001 64116 这样5个一空,然后保存到数据库中。 
我觉得我的代码挺正确的,因为当我的码是16位的时候却能正确将格式保存到数据库中,请各位高手指教啊!!!
问题补充:或者我formatstring这个函数应该怎么用?是否能解决! 
我最最奇怪的就是为什么16位的可以按格式保存到数据库而20位就不行,是不是我数据库中对应这个字段没有设置正确那

解决方案 »

  1.   

    保存的时候没有提示什么错误吗 ???
    或者你可以看看你数据库字段的数据类型看看容不容的下这么大的字节.formatstring这个东西没用过,帮你顶了..
      

  2.   

    你用strtofloat当数据过大时会用科学计数法表示,结果就不对了
    有这样的formatstring函数吗?
    关注学习中
      

  3.   


    procedure Button1Click(Serder: TObject);
      {=================================================================
        功 能: 在字符串左右填充指定数量的指定字符
        参     数:   inString: 原始字符串;
                     maxLength:填充后的长度;
                     padChar:  需填充的字符;
                     Left:     是否从左边开始,否则从右边开始;
        返回值:   填充后的字符串
        备   注:
        版   本:
                1.0     2008/03/01 21:05:00
      =================================================================}
      function UT_PadString(inString: string; maxLength: integer; padChar: char; left: boolean): string;
      begin
        result := inString;
        while (Length(result) < maxLength) do
          if (left) then
            result := padChar + result
          else
            result := result + padChar;
      end;
    begin
      t:= VarToStr(query1.Fields[0].Value);
      //仅针对已知20位长的数字格式化
      t:= UT_PadString(t,20,'0',true);
      t:= Copy(t,1,5)+' '+Copy(t,6,5)+' '+Copy(t,11,5)+' '+Copy(t,16,5);
    end;
      

  4.   

    谢谢dl110
    我已经解决了,就是用的copy这个函数,哈哈!