我的sql代码是:
update fbsj4 A,(select sum(qsbz3) as qsbz1,sum(qsbz6) as qsbz2 from dgsj_fb13_1 where yw_dm='2006-001' and dg_dm='19' and sum_bz='1') B set A.qsbz1=B.qsbz1,A.qsbz2=B.qsbz2 where A.yw_dm='2006-001' and A.bqsbz=7
总是提示“必须使用一个可更新的查询”但如果我把代码中的两个sum函数去掉,则可以运行通过,这是为什么呀?
update fbsj4 A,(select qsbz3 as qsbz1,qsbz6 as qsbz2 from dgsj_fb13_1 where yw_dm='2006-001' and dg_dm='19' and sum_bz='1') B set A.qsbz1=B.qsbz1,A.qsbz2=B.qsbz2 where A.yw_dm='2006-001' and A.bqsbz=7

解决方案 »

  1.   

    更新两个表,加了SUM就不是“表”了。
      
    --------------------------------------------------------------
    程序,犹如人生。
      

  2.   

    我先运行中间的子查询,然后取出数据去更新
        sqlStr:='select sum(qsbz3) as qsbz1,sum(qsbz6) as qsbz2 from dgsj_fb13_1 where yw_dm='''+khxx[0]+''' and dg_dm=''19'' and sum_bz=''1''';
        ADOQuery1.SQL.Text:=sqlStr;
        ADOQuery1.ExecSQL;
        bl1:=ADOQuery1.FieldByName('qsbz1').AsString;
        bl2:=ADOQuery1.FieldByName('qsbz2').AsString;
    为什么会提示找不到字段“qsbz1”和"qsbz2"呀,(我不想用fields[0]取数)
      

  3.   

    是写错代码了,把ADOQuery1.open;写成ADOQuery1.ExecSQL;了