delphi如何获得access里小数的显示位数????????郁闷.

解决方案 »

  1.   

    比较笨的办法:
    function getPointLength(ADOQuery1: TADOQuery): integer;
    var
      i: integer;
    begin
      result:= -1;
      i     := Pos('.',IntToStr(ADOQuery1.Recordset.Fileds[0].Value));
      result:= Length(Copy(IntToStr(ADOQuery1.Recordset.Fileds[0].Value)),i+1,Length(IntToStr(ADOQuery1.Recordset.Fileds[0].Value))-i);
    end;
      

  2.   

    这个方法好象不行的啊,因为access里小数存储和小数显示是不一样的.小数的显示并不会改变小数的实际存储值.
    比如说在access里设置显示2位小数,但得到的值并不2位而是9位的.
    大家还有什么办法啊,郁闷!
      

  3.   

    这是一个简单的类型转化问题。ACCESS数据自动对应DELPHI的类型是一个浮点型。存储采用字符串就行了。取出也一样。当字符串处理。
      

  4.   

    你管它是几位!
    http://blog.csdn.net/APOLLO_TS/archive/2007/08/31/1766229.aspx  不是拿DELPHI写的哦!
      

  5.   

    哎,怎么就没人能理解我的意思呢?????
    我问的不是字符串来判断小数有几位啊
    而是在access中设置小数有几位啊,两码事情啊!!!
    在access中实际存储的单精度数据并不是显示的数据,所以不能简单的使用字符串来判断有几位的。
      

  6.   

    在access中实际存储的单精度数据并不是显示的数据?没试验出来。用的是BDE方式,数据是13.533333333333结果还是13.533333333333
    不过256基本都能显示出来吧!!估计是想问怎么获得字段的设置精度吧!!
    这个不会!
    帮你顶吧!
      

  7.   


    //打开数据集之前将数值型转化成字符串.即可实现.
    dataset.sql.text:='select str(conl1) from tb_name'
      

  8.   

    哦,原来楼主是判断数据库设计的时候的小数位数。以上方法基本不可行,因为连接ACCESS的双精度类型字段,DELPHI默认转换称了TFloatField类型,而这玩意是无法判定小数位数的。要通过ADOX来连接ACCESS数据库,然后判断字段的小数位数。或者通过OLE连接ACCESS来判断。具体可以查找MSDN或者ACCESS的帮助。还有,你做这个有意义吗?估计你是想录入数据往数据库里存之前判断一下数据库的小数位数、要存数据的小数位数,这玩意针对ACCESS没任何意义,况且小数位数在数据库设计阶段都定义好了,在DELPHI中直接限制即可。