procedure TLandF.change(UserID : string);
var
  Query : TQuery;
begin
  Query := TQuery.Create(nil);
  Query.DatabaseName := DBName;
  Query.SQL.Add('update userb set  money=:strtofloat(fineedit.text) where UserId = :UserId');
  //Query.ParamByName('money').AsFloat:=strtofloat(FineEdit.Text);
  Query.ParamByName('UserId').Asstring := userId ;
  Query.ExecSQL;
  Query.Free;
end;编译没错误运行出错:invalid use of keyword. token:money=?)line numer:1.
要如何改
Query.DatabaseName := DBName;
这一句要不要设罢什么控件,dbname是不是一个路径别名
  

解决方案 »

  1.   

    'update userb set  money=:strtofloat(fineedit.text)-->'update userb set  money=:pQuery.ParamByName('p').AsFloat:=strtofloat(FineEdit.Text);
      

  2.   

    我想这与具体的数据库类型有关系吧.dbname可以是一个别名.
      

  3.   

    Query.SQL.Add('update userb set  money=:strtofloat(fineedit.text) where UserId = :UserId');这句错了
    :strtofloat(fineedit.text) 
    “:”号不要
    用“'”号引起来  Query.SQL.Add('update userb set  money='+strtofloat(fineedit.text)+' where UserId = :UserId');
      

  4.   

    楼主用的字段名money为保留字,所以当然出错了,改一下字段名就可以了
    是不是用的paradox?呵呵,记得给我加多点分^_^你写的语句应该是对的
      

  5.   

    同意jinjazz(我是jin)的回答!
      

  6.   

    procedure TLandF.change(UserID : string);
    var
      Query : TQuery;
    begin
      Query := TQuery.Create(nil);
      Query.DatabaseName := DBName;
      Query.SQL.Add('update userb set leftmoney=:m where UserId = :UserId');
      Query.ParamByName('m').Asfloat := strtofloat(FineEdit.text) ;
      Query.ExecSQL;
      Query.Free;
    end;
    (运行时错误)
    这个还是不行
    我把表的字段改为:leftmoney还是不行呵
    错误光标在Query.free
      

  7.   

    用的确实是paradox
    要怎么改
    是不是只改字段就可以了
      

  8.   

    Query.SQL.Add('update userb set leftmoney=:m where UserId = :UserId');
      Query.ParamByName('m').Asfloat := strtofloat(FineEdit.text) ;Query.ParamByName('UserId').Asfloat := 什么?
      

  9.   

    正确的贴出来吧
    特别谢谢镇江同志呵
    procedure TLandF.change(UserID : string);
    var
    Query : TQuery;
    begin
    Query := TQuery.Create(nil);
    Query.DatabaseName := DBName;
    Query.SQL.Add('update userb set leftmoney=:aa where UserId = :UserId');
    Query.ParamByName('aa').AsFloat := strtofloat(FineEdit.Text);
    Query.ParamByName('UserId').Asstring := userId ;
    Query.ExecSQL;
    Query.Free;
    end;