With fuzhu_ado do
      Begin
       close;
       sql.clear;
       sql.Add('update jhmxkc set shuliang=a.shuliang+b.shuliang from thmx b ,jhmxkc a where b.thmc=a.yjmc');
        execsql;
为什么这样写老是提示:‘语法错误(操作符丢失)在查询表达式a.shuliang+b.shuliang from thmx b ’

解决方案 »

  1.   

    对了,我用的是ACCESS数据库?难道跟这个有关!
      

  2.   

    With fuzhu_ado do
    Begin
       close;
       sql.clear;
       ql.Add('update jhmxkc set shuliang=(Select(a.shuliang+b.shuliang) from thmx As b ,jhmxkc As 
    a where b.thmc=a.yjmc');
            execsql;
    end;
      

  3.   

    With fuzhu_ado do
    Begin
       close;
       sql.clear;
       ql.Add('update jhmxkc set shuliang=(Select(a.shuliang+b.shuliang) from thmx As b ,jhmxkc As 
    a where b.thmc=a.yjmc)');
            execsql;
    end;
      

  4.   

    不行的,我刚才试了一下!还有一点,如果我上面的语句到的sql server里面,是可以通过的,问题就是我现在要用到单机版,我用的是access数据库!这样的语句不能通过!
      

  5.   

    这句语句在sql server里面没有问题,可在access里面却提示错误!那么该怎么办呀!难道真的不能兼容!可我需要用的是单机版呀!得怎么做才好呀!update b set 数量=b.数量+a.数量 from a,b where a.编号=b.编号
      

  6.   

    FOR ACCESS:
    With fuzhu_ado do
    Begin
       ACTIVE=FALSE;
       sql.clear;
       Sql.TEXT:='update jhmxkc AS A LEFT JOIN  thmx AS B ON(b.thmc=a.yjmc) set A.shuliang=A.shuliang+B.shuliang ';
       execsql;
    end;
    注意大寫部分的不同,尤其是LEFT JOIN 而不是INNER JOIN.
    不行配你錢.
      

  7.   

    偶像呀!!!行了,我搞了一上午拉,谢谢你了,能帮我解释一下
    left join吗?
    我从来没有看过这样的写法!
      

  8.   

    用你自己的写法,只是在update后将两张表名都加上也能实现
      

  9.   

    不行的,我试过的了!在ACCESS数据库中没有办法实现,在sql server中可以!zhangqiufk真言的方法很好,我上午用了很多种方法,都不行,搞定了!在次谢谢!也谢谢各位朋友的帮忙!
      

  10.   

    INNER JOIN:
        Table1      Table2
        aaa  <--->  aaa        
        bbb  <--->  bbb
                    ccc
        ddd
        eee  <--->  eee
    results:
        aaa+aaa
        bbb+bbb
        eee+eee
      少了ddd. 
    LEFT JOINN:
        Table1      Table2
        aaa  <---  aaa        
        bbb  <---  bbb
                   ccc
        ddd  <---  NULL
        eee  <---  eee
    results:
        aaa +aaa 计算
        bbb +bbb 计算
        ddd      计算:ddd+NULL不影响结果。 
        eee +eee 计算understand?