VB编写的仓库管理系统,盘点模块的算法是用相对盘点,现在需要改进算法,
ACCESS数据库,包含数据表
库存表:
品名编号,品项,库位,单重,总重,库存数量,......
进出库明细:
品名编号,品项,库位,单重,总重,进库数,出库数,日期......
盘点表(临时表):
品项,库位,单重,总重,上月库存,本月进库,本月出库,本月结存,年月......我们都是月未盘点,其中上月库存是反推得来的。公式:上月库存=本月结存(实时的库存数据)+本月出库-本月进库因为我们都是月未盘点,但有时并不是严格在月未盘点,所以常有,如9月未的“上月库存”不等于8月未盘点的“本月结存”。
现在我想把盘点表(临时表)不再用临时表来做,而是实时的保存记录,公式改成:本月盘点=上月库存+本月进库-本月出库新式盘点表:
品项 库位 上月库存 本月进 本月出 本月存 年月 实时库存 差异数
A X 50 30 40 40 200908
B Y 100 20 70 50 200908
C Z 30 60 30 60 200908
A X 40 200909
B Y 50 200909
C Z 60 200909
现在的做法是 用如上新公式,9月盘点时直接取8月份的“本月存”来做9月份的“上月库存”,实时库存=库存表库存量,差异数=实时库存-本月存
请各大侠给下建议是否还有更佳的算法
ACCESS数据库,包含数据表
库存表:
品名编号,品项,库位,单重,总重,库存数量,......
进出库明细:
品名编号,品项,库位,单重,总重,进库数,出库数,日期......
盘点表(临时表):
品项,库位,单重,总重,上月库存,本月进库,本月出库,本月结存,年月......我们都是月未盘点,其中上月库存是反推得来的。公式:上月库存=本月结存(实时的库存数据)+本月出库-本月进库因为我们都是月未盘点,但有时并不是严格在月未盘点,所以常有,如9月未的“上月库存”不等于8月未盘点的“本月结存”。
现在我想把盘点表(临时表)不再用临时表来做,而是实时的保存记录,公式改成:本月盘点=上月库存+本月进库-本月出库新式盘点表:
品项 库位 上月库存 本月进 本月出 本月存 年月 实时库存 差异数
A X 50 30 40 40 200908
B Y 100 20 70 50 200908
C Z 30 60 30 60 200908
A X 40 200909
B Y 50 200909
C Z 60 200909
现在的做法是 用如上新公式,9月盘点时直接取8月份的“本月存”来做9月份的“上月库存”,实时库存=库存表库存量,差异数=实时库存-本月存
请各大侠给下建议是否还有更佳的算法
另一个就是一个表格纪录库存差异。比如根据公式算出来上个月库存90,但是上个月实际库存是80,你的表格可以是
日期 计算库存 实际库存
200909 90 80
200910 70 70
这样能够做到的就是保留一个记录。仓储管理对于差异纪录的保存非常重要。
'-----------------------------------
最好还是日结,可以下班之后自动运行日结。如果数据有问题通知需要通知的人。另外就是细节把关,如果你们出入库是用barcode扫描直接进入数据的话还是把关好
损耗是一定会出现的,系统可以做的
1尽量降低系统数据和实际数据的误差
2如果出现误差及时通知相关人员,给出辅助的分析
“公式:上月库存=本月结存(实时的库存数据)+本月出库-本月进库”並非亂來,一般做盤點表都用臨時表做,這樣的話數據庫才不致過大...用臨時表的話要算出上月結存就只能用反推法,就是上述公式.進出明細裡面我不是分年月,"日期"字段是必須的,要不憑何盤點,憑何統計?
2.看不到要做临时表的必要性,聚合查询语句不能达到你的要求?至于数据库大小,不知你用的是什么数据库,如果是access可能会有这种担忧,但如果用sqlserver或 Oracle 之类的来做进销存,以现在硬盘的大小,基本就不需要担心。几年前我在一家公司做时,那套系统每天有数万~数十万的记录入库,每条记录有三十个字段,当时几百G的硬盘卓卓有余了,关键是要定期做数据库备份。即使是使用access,如果不需要多用户联网,一般中小企业的进销存也足够胜任了,不必太担心大小。
3.至于“而且進出庫還分ABCDEF....等等類別”你没有说清楚是什么意思,是不是指你举的例子中的“品项”?只要有一定的模式,一般都应该可以用聚合查询语句解决。
进出库明细:
品名编号, 品项, 库位, 日期, 類別, 进库数,出库数,单重,总重......
001 A X 20090923 100 100此種情況比較多...如果像您所說的那樣, +-表示的話,要多N筆記錄,當然這個也跟個人設計風格有關...
再重申一下,我只想請教關於盤點表的算法思路.我的想法上面已經提及.lsftest,請教一下,你一般盤點表中的"上月盤存"用何算法?假如你不用反推法...排除我的干擾.你一般會用哪種算法?謝謝.
select。。from。。where dt>=某年某月某日 and dt<=某年某月某日 group by 货品
或直接把这段时间段的数据导出到excel再做处理,根据实际情况、用户的需求选择用哪种方法。这样可以进行随时盘点,每日、每周、每月都没问题,想什么时候盘点就什么时候盘点,而且数据是最新最准的。不过看来这一套系统当初不是你做,既然数据库结构那些东西已被定死了不能改,那再想别的办法吧。
你提到的倒推法,是用现有的结果来倒推出初始库存,我觉得在业务流程上不应该这样做。
select。。from。。where dt>='1900-01-01' and dt <='2009-08-31' group by 货品
直到现在的库存就是:
select。。from。。where dt>='1900-01-01' and dt <='2009-09-24' group by 货品