with query1 do
  begin
    databasename:='test_data';
    sql.add('update tb1');
    sql.add('set value='+''''+'000001'+'''');
    sql.add('where no='+''''+'000005'+'''');
    execsql;
  end;

解决方案 »

  1.   

    sql.add('where no='+'''''+'000005'+''''');
    应改为
    sql.add('where no='+''''+'000005'+'''');
    其实这种地方应该用Params来传递参数更合适
      

  2.   

    你使用的value是保留字,不能用作字段名,如果你一定要使用请加上,tb1,既:
    sql.add('set tb1.value='+''''+'000001'+'''');
      

  3.   

    象你这样写的话。
    这个语句只能执行一次
    或者不能执行;
     规范一点应该是:
     with query1 do
      begin
        databasename:='test_data';
        close;
        sql.clear; 
        sql.add('update tb1');
        sql.add('set value='+''''+'000001'+'''');
        sql.add('where no='+''''+'000005'+'''');
        execsql;
      end;
    若有错误提示,应该是参数的原因,看firing_sky的答案。
      

  4.   

    其实简化的写法可以这样写
    with query1 do
    begin
       DataBaseName:='test_data';
       close;      //关闭打开的查询
       sql.Clear;  //将其原先语句清空
       sql.Add('update tab1 set value=:svalue where no=:snumber'); //
       sql.ParamByName('svalue').AsString:='000001';
       sql.ParamByName('snumber').AsString:='000005';
       ExecSql;
    end;