同时操作两张表进行赋值时总提示 from子句错误 用的是access的数据库
 with  adoquery1 do         begin
             close;
             sql.Clear;
             sql.Add('select stnf.zm,stnf.yl,calc.stat,calc.pre from stnf,calc ');
                 sql.Add('update stnf');
             sql.Add('set stnf.yl=calc.pre');
               sql.Add('where stnf.zm=calc.stat ');
                open;
         end;我把update那些注掉后就没问题,这是怎么回事?
我需要从calc这张表读取stat和pre两列,与stnf这张表的zm,yl进行比较,如果zm=stat 就把pre赋给yl

解决方案 »

  1.   

    var
      vSQL:string;
    .....
    vSQL := ' update stnf '
         + ' set stnf.yl=calc.pre '
         + ' from calc, stnf '
         + ' where stnf.zm=calc.stat';with adoquery1 do
    begin
      close;
      sql.clear;
      sql.text := vSQL;
      open;
    end;
      

  2.   

    update的话,好象只能用adoquery1.ExecSQL
    不明白你的流程是要做是什么
      

  3.   

    select ... update ?似乎不能在一个语句中吧
      

  4.   

    从另一个库读取资料写入这个库的calc,再从calc赋值到stnf的指定字段
      

  5.   

    open返回结果,ExecSQL不返回结果
      

  6.   

    你的sql有问题,select和update是两个过程,你这里要分开处理
    另外不建议使用Sql.Add
    因为在Acsses中,是不支持多Sql语句查询的,在sql中可以使用
      

  7.   

    sql.Add('update stnf'); 
    sql.Add('set stnf.yl=calc.pre'); 
    sql.Add('select stnf.zm,stnf.yl,calc.stat,calc.pre from stnf,calc ');  
    sql.Add('where stnf.zm=calc.stat ');