把你的SQL语句COPY到 SQL Explorer,
再报错的话那就是你的不对了。

解决方案 »

  1.   

    把你的query的requestlive设置为true
      

  2.   

    建议通过两个SQL语句实现:
    sStr1:='select sum(conhuowu.数量) as total from conhuowu';
      with Query1 do
      begin
        Close;
        SQL.Clear;
        SQL.Add(sSQL1);
        Open;
      end;  
    然后
     update item set item.现库存量=Query1.FieldByName('total').AsInteger );
      

  3.   

    类似这样:
    update (select item.现库存量, sum(conhuowu.数量) as total from item, conhuowu ...) set 现库存量=total
      

  4.   

    都不行!access见鬼了!
    好象有关依赖于其它表查询的更新都不行!当然是access表,同样的语句在sql server中可以的,在access中不行!
    除非象这样的简单语句 update item set item.现库存量=item.现库存量+1;
      

  5.   

    这个问题的关键其实就在‘update item set item.现库存量=’后面的部分。如果
    update item set item.现库存量=item.现库存量+1; 可以的话,那么,你用一个变量来获取
    要改变成的库存量,然后附值。理论上肯定没问题。最后,建议仔细检查一下程序,有时候,错误
    可能只在一个符号。
      

  6.   

    我的方法绝对可行,用过的。update item set 现库存量=新存量
    上面语句中的item可以替换为
    (Select ...as 现库存量, as 新存量 from ... group ... where ...)就是说,可以将查询当作表来用,非常复杂的都可以,我试过嵌套10层都无问题。
    对了,我说的就是Access!ADO
      

  7.   

    请ImFool(搞技术的都是傻瓜)帮忙看看!我还是通不过!说update语法出错!光标停在'('上;
    解释一下!item是所有商品类目的库,subitem是它的明细表!每笔交易的出入库都写在subitem表中!有'出库数量'和'入库数量'两个字段,但'期初库存'和'现库存量'在item主表中!他们之间的关联通过'conno'字段,相当于“货号”的意思!我下面的语句在access中写的用来更新item的“现库存量”!
    update (SELECT item.期初库存, item.现库存量, Sum(SubItem.出库数量) AS 出库数量, Sum(SubItem.入库数量) AS 入库数量, item.ConNo
    FROM item INNER JOIN SubItem ON item.ConNo = SubItem.ConNo
    GROUP BY item.期初库存, item.现库存量, item.ConNo)
    set 现库存量=期初库存-出库数量+入库数量我还有好多关于sql语法的问题!如果你能解答的话!我把分全部给你!!
      

  8.   

    用什么都不行,Access好象不支持嵌套的SQL语句。
      

  9.   

    update (
      select * from item A inner join
        (select ConNo, sum(出库数量) as 出库数量, sum(入库数量) as 入库数量 from subitem group by ConNo) B 
        on A.ConNo = B.ConNo
    ) set 现库存量 = 期初库存 - 出库数量 + 入库数量
        以上语法是正确的,也提供了足够的更新信息。
        遗憾的是,Jet 报错:“操作必须使用一个可更新的查询”。毕竟只是简单的桌面数据库。
        我反复试验了各种写法,只要出现统计函数就不行(否则再复杂都可以)。    以下语句可以执行,相当于循环多次更新,结果正确。不过我不推荐这种做法。
    update (select * from item A inner join subitem B on A.ConNo = B.ConNo) 
    set 现库存量=现库存量-出库数量+入库数量
        另外,我认为你的库设计本身不太合理。既然你不想随时更新,就没必要设置“现库存量”字段,在需要时再统计;如果处理这个字段,就应该在每次进出库时更新,将单据的提交与以下语句合并为一个事务。
    update (select ... from item A, subitem B where A.ConNo = B.ConNo and B.单据号=刚刚新增的记录)
    set 现库存量=现库存量-出库数量+入库数量
      

  10.   

    好像是不支持,用个insert into table1(rq,dd) select rq,dd from table2 where 
    rq>'2001-05-02'都不行
      

  11.   

    sqlserver的sql与access的是不同的,特别是update以及有左右连接的语句。
    我做过的一个可以同时用sqlserver与access的程序就要加上对sql的进行重新解释的过程。