以文本方式查看主题

-  易表在线答疑  (http://egrid2000.com/dvbbs/index.asp)
--  用户社区  (http://egrid2000.com/dvbbs/list.asp?boardid=2)
----  [求助]求仓库列的数量不能同步计算  (http://egrid2000.com/dvbbs/dispbbs.asp?boardid=2&id=20280)

--  作者:east858
--  发布时间:2010/11/30 18:00:00
--  [求助]求仓库列的数量不能同步计算
提高统计速度
尽量避免重算全表

假定我们有一个仓管系统,该系统由三个表组成,分别为进货、销售、仓库。
显然,对于每一种产品,总的进货数量减去总的销售数量,就是仓库数量,所以“仓库”表中数量列的刷新公式为:
Sumfor("进货", "数量", "产品名称", "=", [产品名称]) - Sumfor("销售","数量","产品名称","=",[产品名称])

以后我们需要得到最新仓库数据的时候,只需重算“仓库”表即可。但是如果有5000种产品名称,进销售记录有上10万条,那么重算整个仓库表可能需要数十分钟才能完成,很少有人能够忍受这种漫长的等待。

下面我们来改进一下这个系统:
1、在“进货”表和“仓库”表之间、“销售”表和“仓库”表之间通过“产品名称”列建立关联。
2、将“进货”表数量列的操作公式设为:
if([仓库!RelationRow]>0, RecalcRow("仓库",[仓库!RelationRow]),True)
3、将“销售”表数量列的操作公式设为:
if([仓库!RelationRow]>0, RecalcRow("仓库",[仓库!RelationRow]),True)
if([仓库!RelationRow]>0, RecalcRow("仓库", [仓库!RelationRow]),True)
上述公式的含义是,一旦有进销售,就立即重算“仓库”表中对应的行。这样我们在某产品名称有进销售的时候,即时计算出了该产品名称的仓库,整个仓库表的数据随时都是最新的,无须在需要最新仓库数据的时候去花费几十分钟重算整个仓库表,效率大为提高。
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

 按照这个公式::
     我的文件他不会自动刷新,  我用的是窗口界面,请大家看看  

 比如  我在进货表里面添加 进货数量  ,而仓库数量却不能同步变化,,我必须在进货表里面刷新  数量列  仓库数量才正常同步,,,........

由三个表组成,分别为进货、销售、仓库
       在数量列  进货、销售、  的代码:
if([仓库!RelationRow]>0, RecalcRow("仓库",[仓库!RelationRow]),True)


--  作者:smileboy
--  发布时间:2010/11/30 20:02:00
--  
发文件
--  作者:east858
--  发布时间:2010/11/30 20:17:00
--  
egd文件下载
--  作者:wjq1072
--  发布时间:2010/11/30 21:16:00
--  
egd文件下载
--  作者:east858
--  发布时间:2010/11/30 21:38:00
--  
原来 是在  仓库 数量 刷新中加   [进货!数量]-[销售!数量] ,问题终于解决了,这次速度应该没有问题了
谢谢 wjq1072 总版主