sql server下,我定义的一个字段的数据类型为:money。在delphi下用一个
currtostr()的函数把它转换为string类型,系统提示无效的转换,是什么原因啊,怎样才能正确转换。
var text : string;
text:=currtostr(adodataset.fields[i].value);
其中adodataset.fields[i].value为money类型。系统提示无效的转换,是什么原因啊,怎样才能正确转换。有什么函数没有啊?

解决方案 »

  1.   

    用 
    var text : string;
    text:=FloatToStr(adodataset.fields[i].value);
      

  2.   

    我给你说明一下。
    adodataset.fields[i].value返回的是一个 Variant 型变量。即我们通常说的变体。
    你可以用 VarToStr(adodataset.fields[i].value) 这样可以安全转换,否则一但
    你这个 adodataset.fields[i].value=NULL 时,一楼那位兄弟说的FloatToStr同样
    也会报无效的类型转换,你可以试试,多看看 ADO Help 的说明,这组控件挺特殊的。
      

  3.   

    如果字段是數字類行的時候,當值為NULL時會反回0值的不會出現樓上所說的錯誤的.
      

  4.   

    用 ext:=VarToStr(adodataset.fields[i].value)
      

  5.   

    adodataset.fields[i].AsString; 最保险,简捷。
    其它方式对需要对某些特殊值(如NULL)判断处理,较繁琐。
      

  6.   

    var text : string;
    text:=FloatToStr(adodataset.fieldbyname('字段名').asstring);
      

  7.   

    那位 hanhsh 大侠你说为 NULL 时返回 0 你试过没有啊?我都试过 N 次了,
    ORACLE 和 SQL Server 我都试过了,没有一个为 NULL 时能通过的,
    你还是安下心来,好好的试试,。试完了你再来发帖子行么?
    我用的是 Delphi6。