把你的SQL语句COPY到 SQL Explorer,
再报错的话那就是你的不对了。
再报错的话那就是你的不对了。
解决方案 »
- 请教RzNumericEdit 的问题
- 高难度问题!如何准确得到excel文件的总页数?
- 散分
- 我用DELPHI 编写, 能不能把一个表里的列也弄成变量啊???
- 200 分悬赏 Visio 2002 需要激活的简体中文原版
- 程序提示: 无法定位程序输入点fadd于动态链接库libfml.dll?我该怎么办?
- 关于Pascal语言,问题2
- 偶最近做了个表格控件(15000行代码),留下你们的email,我把控件发给你们,只要给出改进意见就有分
- Delphi+COM
- Delphi 如何从lookupcombobox中取值后怎样赋值给SQL中的名称然后提取其值赋值给LABEL
- 谁有关于TTreeView 结和 TListView控件的使用例程,功能多一点,送30分给他,绝不食言!
- 关于从数据库向 WORD 文档中添加记录的问题,打者必有分!!
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 );
update (select item.现库存量, sum(conhuowu.数量) as total from item, conhuowu ...) set 现库存量=total
好象有关依赖于其它表查询的更新都不行!当然是access表,同样的语句在sql server中可以的,在access中不行!
除非象这样的简单语句 update item set item.现库存量=item.现库存量+1;
update item set item.现库存量=item.现库存量+1; 可以的话,那么,你用一个变量来获取
要改变成的库存量,然后附值。理论上肯定没问题。最后,建议仔细检查一下程序,有时候,错误
可能只在一个符号。
上面语句中的item可以替换为
(Select ...as 现库存量, as 新存量 from ... group ... where ...)就是说,可以将查询当作表来用,非常复杂的都可以,我试过嵌套10层都无问题。
对了,我说的就是Access!ADO
解释一下!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语法的问题!如果你能解答的话!我把分全部给你!!
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 现库存量=现库存量-出库数量+入库数量
rq>'2001-05-02'都不行
我做过的一个可以同时用sqlserver与access的程序就要加上对sql的进行重新解释的过程。