: 更新表中有一列为money型,更新报错,提示:不允许从数据类型 varchar 到数据类型 money 的隐性转换(表  'beyond_store_ht2.dbo.tb_gds',列 'c_price')。
请问怎么解决?
各位帮帮忙!! simpledataset1.Edit;
  simpledataset1.Post;
  simpledataset1.DataSet.Close;
  SimpleDataSet1.ApplyUpdates(0);
如何在DELPHI中将字符型转换为money型数据?

解决方案 »

  1.   

    char(c_price as money)
    看你的错误,如果数据库里的字段是money的话,这个错误应该是你要保存的记录里有空格或者其他不能转换为MONEY的字符
    delphi里保存的时候是不需要怎么转换的
    simpledataset1.fieldbyname('c_price').asstring=
    这样写也是可以的
      

  2.   

    我想问在DELPHI中这个语句应该怎么写,因为我不管更不更新这个列DELPHI都报这个错
    我在更新时的语句是这样写的,各位能帮我改改语名让我执行成功吗?
    比如我更新另外一列'C_NAME',这是个STRING列,但DELPHI还是报'不允许从数据类型 varchar 到数据类型 money 的隐性转换(表  'beyond_store_ht2.dbo.tb_gds',列 'c_price')。' 
    simpledataset1.Edit; 
      simpledataset1.Post; 
      simpledataset1.DataSet.Close; 
      SimpleDataSet1.ApplyUpdates(0); 
    谢谢各位了,大家帮帮忙!!
      

  3.   

    'c_price',你这个字段应该是不允许为空,
      

  4.   

    不是那个问题,我用了STRTOFLOAT()这个函数还是报错
      

  5.   

    1.检查一下列 'c_price'是否不可为空,是否有默认值
    2.检查数据中是否有字符类型的
      

  6.   

    你看看是不是c_proce付了空值了
      

  7.   

    列'C_PRICE'允许空,数据中无字符型数据
    我没有更新'C_PRICE',DELPHI也报'不允许从数据类型 varchar 到数据类型 money 的隐性转换(表  'beyond_store_ht2.dbo.tb_gds',列 'c_price')。 '我用DBGRID从SQL2000中提取数据
    比如:表TB_GDS
    列有C_GCODE(字符型),C_NAME(字符型),C_PRICE(money型)
    我在C_NAME列上作了修改,没动其它列,
    保存用语句:
    simpledataset1.Edit; 
      simpledataset1.Post; 
      simpledataset1.DataSet.Close; 
      SimpleDataSet1.ApplyUpdates(0); 
    DELPHI也报:'不允许从数据类型 varchar 到数据类型 money 的隐性转换(表  'beyond_store_ht2.dbo.tb_gds',列 'c_price')。 '
    这是为什么?我用POWERBUILDER写的程序就可以保存没有错误
    大家帮帮忙!!
      

  8.   

    改成float类型吧,可以隐性转换的
      

  9.   

    这是别人的数据库,不能改,能在DELPHI中想点办法吗?
      

  10.   

    你需要提供dataset的SQL语句、要更新的字段、要更新之后的值等信息,只贴出这点信息是无法分析错误原因的
      

  11.   

    好象是 dbExpress 组件的BUG,我也碰到这个问题