请教一下,这个语法有什么错误
sql.Add('update ' + datamodule1.returninfo_table.TableName + ' set MaYang = tt where FormNo = ' + rt_formno.Text);tt和MaYang是double

解决方案 »

  1.   

    sql.Add('update ' + datamodule1.returninfo_table.TableName + ' set MaYang = tt where FormNo = ' + '''' + rt_formno.Text + '''');
      

  2.   

    FormNO是char类型的吧 where formno='''+rt_formno.text+'''';
    还有 tt也是字段名吗,如果不是,就拿到引号外面
      

  3.   

    使用参数可以的
    sql.Add('update ' + datamodule1.returninfo_table.TableName + ' set MaYang = :tt where FormNo = ' + rt_formno.Text);
    parambyname('tt').asfloat:=tt;在sql中不能付值非string的
      

  4.   

    试试这个:
    Var
      StrSql : string;StrSql := 'Update %s Set MaYang = tt Where FormNo = %s';
    StrSql := Format(Sql,[Trim(datamodule1.returninfo_table.TableName),Trim(rt_formno.Text)]);
    Sql.Add(StrSql);其实,如果可能,你应该把报错信息写出来。这样比较清楚。
      

  5.   

    sql.Clear;
      sql.Add('update ' + datamodule1.returninfo_table.TableName + ' set MaYang = :a1  where FormNo = '+ rt_formno.Text );
      //sql.Add('update ' + datamodule1.returninfo_table.TableName + ' set MaYang = tt where FormNo = ' + '''' + rt_formno.Text + '''');
      datamodule1.ADOQuery1.Parameters.ParamByName('a1').Value:= rt_mayang.Text;这样还是不行,大家帮帮忙!
      

  6.   

    sql.Clear;
    sql.Add(' update ' + datamodule1.returninfo_table.TableName + ' set MaYang = tt where FormNo = ''' + rt_formno.Text + ''' ');
      

  7.   


    with datamodule1.ADOQuery1 do
     begin
     sql.Clear;
      sql.Add('update ' + datamodule1.returninfo_table.TableName + ' set MaYang = :a1  where FormNo = '+ rt_formno.Text );
      Parameters.ParamByName('a1').Value:= strtoint(rt_mayang.Text);
      execsql;
      refresh;
    错误:can not perform this operation on a closed dataset我想让更改后的表能够重新打开,并显示!
      

  8.   

    with datamodule1.ADOQuery1 do
     begin
     sql.Clear;
      sql.Add('update ' + datamodule1.returninfo_table.TableName + ' set MaYang = :a1  where FormNo = '+ rt_formno.Text );
      Parameters.ParamByName('a1').Value:= strtoint(rt_mayang.Text);
      execsql;<-update 到这里就执行完了。
      refresh;用open打开数据库呀,不过'update'语句不会返回结果集,所以open会出错。换成select语句就行了