数据库是SQLServer,数值字段类型是Decimal(12,6),用ADO,但TBCDField只能保留到小数点4位,而TFMTBCDField说是可以,但对应的SQL Server数据库字段类型应该是什么,用Decimal(12,6)、Float都不行。该如何解决?

解决方案 »

  1.   

    应当不存在这样的问题啊。
    总长度取大些试试。
     numric(18,6)
      

  2.   

    用控件TPBNumEdit吧.设置一个属性就OK了
      

  3.   

    三层结构,字段类型与TADODataSet、TClientDataSet等都要对应的,如数据库字段是Decimal(12,6),则在中间层和客户端是TBCDField,这应该不是客户端的编辑控件所能解决的问题吧?
      

  4.   

    关于delphi中只能显示4位小数的问题
        
        最近也遇到了这个问题,查询资料,发现一些解决办法,但试验了一下,发觉这些资料说的都不太清楚,所以在这里详细叙述一下。    一种方法,是将decimal(x,x)或numeric(x,x)类型改变为float数据类型。这样,无论输入多少位,都可以正常显示,但不足的是精度不高,浮点类型数据在计算时,会产生一些微小的误差。所以这个办法,只能根据具体情况来决定是否采用。    另一种方法,是设置ADO数据集的EnableBCD := False,但具体在实施时,却发现一个现象,未必有效。为什么呢?不知道,但找一下规律,就可以让它绝对有效。
        这个规律是这样的,在我们添加一个ADO数据集控件到程序中时,默认状况下,EnableBCD = true,这时候如果我们在数据集中添加字段,那这些字段就只能显示4位小数,即使你再设置数据集的EnableBCD := False,也没有用。
        这时,一定要把想全部显示小数的字段删除,再设置EnableBCD := False,然后(笔者大喝一声,这一步一定不能少),将数据集打开、关闭一次,对了,设置Active = True,再=false,然后再添加需要的字段,这样你需要的字段就可以正常显示了。    看来,程序设计的前后顺序也很重要啊。如果不知道这点,误踏陷井,究竟是该怪我辈无知、没有理解borland的深刻用意呢,还是该怪delphi的设计有疏忽?字段类型有区别
    可显示全部小数的字段:    ADOXQuery1Num: TFloatField;
    只能显示4位小数的字段:    ADOXQuery1Num6: TBCDField;
      

  5.   

    参照上述方法,自己解决了:即数据库字段仍是Decimal(12,6)