库存账原理公式是这样: 期初+收入(或入库)-付出(出库)=当前库存量;你在向每个表中录入每一条记录时,都是正数值(其中包括付出数量)但如果付出数量是正数值就无法计算出当前库存量的准确值,而是得到的期初+入库+付出,是这三项的和结果不是我们想要的。为什么会发生这种情况,是因为我们用的是UNION ALL 联合查询语句,这个语句是把期初、入库、出库三个数据集中的记录全部(不漏下任何一条记录,即便有重复值)放到一个新的记录集中,那么在这个新记录集中我产就可以采用Sum函数对具有同样商品代码的商品数量和金额进行分组求和计算,来计算当前有同样商品代码的商品库存量;这时我们会发现如果“出库数量”还是正值时我们计算的当前库存量错误的,所以一开始要对出库数量进行变负值处理;那么怎么处理呢?可参看“付出变为负数”查询的SQL语句 ********注意:不是[付出数量]字段变成了[付出数量为负]字段,而是[付出数量字段]=[付出数量]字段*-1 其表达式为 [付出数量]*-1 AS 付出数量负数 原有的[付出数量]字段 我们没有让它在查询中显示而是隐藏的*********
下面传上图释供参考。
(其实在这个实例中最重要的两个查询就是 流水帐 和 库存!!其他的查询如:付出变为负数、期初表 查询、收入表 查询这三个查询都可以删除掉,这三个查询只不过的将 UNION ALL中的三个部分分解开便于你理解。)
对UNION ALL语句的功能,和SUM函数的用法,请查询ACCESS联机帮助文档。
另外你的表设计还有些问题三个表都没有主键,以后会因此带来很多麻烦。
|