access数据库内,用一个表内容更新另一个表,access内可以正确执行!但在delphi内无法执行,整整一天,找不出问题出在那了?那位大神帮看看!
 sql:='';
       for  i:=0 to 2 do
           begin
                case i of
                 0: sql:='update dfk,temp set dfk.yw=temp.yw where (dfk.id=temp.id) and (dfk.yw is null or dfk.yw=0) and (temp.yw>0)';
                 1: sql:='update dfk,temp set dfk.sx=temp.sx  where (dfk.id=temp.id) and (dfk.sx is null or dfk.sx=0) and (temp.sx>0)';
                 2: sql:='update dfk,temp set dfk.wy=temp.wy  where (dfk.id=temp.id) and (dfk.wy is null or dfk.wy=0) and (temp.wy>0)';
               end;
                  adoquery1.close;
                  ADOQuery1.SQL.Clear;
                  ADOQuery1.SQL.Add(sql);
                  ADOQuery1.ExecSQL;
                  aa:=adoquery1.RowsAffected;
              end;
两个表,一个dfk,一个temp,表结构完全相同,通过ID对应关系,如果dfk表中yw,sx,wy三个字段值为0或空而temp表中yw,sx,wy三个字段值大于0,即用temp表的值更新dfk表的相应字段的值!急啊!

解决方案 »

  1.   

    delphi内无法执行,有什么错误提示信息吗?
      

  2.   

    没有什么错误提示,也没有更新记录!
    但在ACCESS内可以正确执行,并有更新记录数!
      

  3.   

    结帖率:0.00% ,楼主从不不结贴?
     sql:='';
      for i:=0 to 2 do
      begin
      case i of
      0: sql:='update dfk set dfk.yw=temp.yw from temp where (dfk.id=temp.id) and (dfk.yw is null or dfk.yw=0) and (temp.yw>0)';
      1: sql:='update dfk set dfk.sx=temp.sx from temp where (dfk.id=temp.id) and (dfk.sx is null or dfk.sx=0) and (temp.sx>0)';
      2: sql:='update dfk set dfk.wy=temp.wy from temp where (dfk.id=temp.id) and (dfk.wy is null or dfk.wy=0) and (temp.wy>0)';
      end;
      adoquery1.close;
      ADOQuery1.SQL.Clear;
      ADOQuery1.SQL.Add(sql);
      ADOQuery1.ExecSQL;
      aa:=adoquery1.RowsAffected;
      end;
      

  4.   


    sql:='';
      for i:=0 to 2 do
      begin
      case i of
      0: sql:='update dfk,temp set dfk.yw=temp.yw where (dfk.id=temp.id) and (dfk.yw is null or dfk.yw=0) and (temp.yw>0)';
      1: sql:='update dfk,temp set dfk.sx=temp.sx where (dfk.id=temp.id) and (dfk.sx is null or dfk.sx=0) and (temp.sx>0)';
      2: sql:='update dfk,temp set dfk.wy=temp.wy where (dfk.id=temp.id) and (dfk.wy is null or dfk.wy=0) and (temp.wy>0)';
      end;
      adoquery1.close;
      ADOQuery1.SQL.Clear;
      ADOQuery1.SQL.Add(sql);
      ADOQuery1.ExecSQL;
      aa:=adoquery1.RowsAffected;
      end;
      

  5.   

    错误提示!
    语法错误(操作符丢失)在查询表达式'temp.yw from temp'中
    ACCESS的update没有from子句吧!郁闷啊!
      

  6.   

    那你运行时,是错误提示,还是运行通过 但结没有想要的结果呢?
    我在sql查询分析器中跑了下你的sql语句,好像是你的查询语句有问题!因为access用的语言和SQl 好像有点儿区别的!你设个断点儿跑一跑吧!
    要不你换种写法“update dfk set dfk.yw=( select temp.yw from temp , dfk where (dfk.id=temp.id) and (dfk.yw is null or dfk.yw=0) and (temp.yw>0) )
      

  7.   

    终于搞定了,语句没错,还是原来的语句!我把原先的ado控件删除了重新添加后,一切正常了!谢谢各位!来都都有分!