请问一下我的数据库是oracle,其中有个字段允许小数点以下11位,其中有数据1.0415E-06
用bde取是正常的,但用ado取就取出的是0。 请指教
bde是
Query7.Close;
Query7.SQL.Clear;
Query7.SQL.Add(SQLString);
Query7.Active := True;
Nyu := Query7.FieldbyName('NYU').AsFloat;ado是
ADOQuery9.Close;
ADOQuery9.SQL.Clear;
ADOQuery9.SQL.Add(SQLString);
ADOQuery9.Active := True;
Nyu := ADOQuery9.FieldbyName('NYU').AsFloat;

解决方案 »

  1.   

    Nyu := ADOQuery9.FieldbyName('NYU').AsValue看看..
      

  2.   

    除非是 TBCDField,并且其 Size 的值设置不对(11位)。
    不知道你的oracle所要取值的字段类型是什么。是在不行,在查询同时进行类型转换。
      

  3.   

    我试过了ADOQuery9.FieldbyName('NYU').AsValue,结果还是为0呀
    该字段在oracle中是number 13位, 小数部分为11位
      

  4.   

    应该是精度不够我,Nyu取double试下。
      

  5.   

    Nyu 已经是double了
    bde Query7.FieldbyName('NYU').AsFloat的值是对的
    但  ADOQuery9.FieldbyName('NYU').AsFloat的值就是0
    ADOQuery9有什么属性要设吗?
      

  6.   

    双击adoquery1会弹出个fieldseditor的编辑框,把所有的fields选进去,看看nyu的length是多少?
      

  7.   

    现在我在sql中把这个转成string,是好的。
    但直接查这个字段就是0呀。
    实在搞不懂了
      

  8.   

    1. 关闭数据集及ADO连接.
    1. 设定ADOQuery9.EnableBCD为False
    2. 重新添加那个字段, 应该为TFloatField
      

  9.   

    问题解决了,设定ADOQuery9.EnableBCD为False就可以了。
    谢谢大家,特别是wafeijian(韵杰〖痛并快乐着……〗)
    谢谢