以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 关于库存量的有趣问题,请教各位高手。(附示例) (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=3424) |
||||
-- 作者:菜鸟foxtable -- 发布时间:2009/7/3 23:31:00 -- 关于库存量的有趣问题,请教各位高手。(附示例) PS:批号指的是同一厂家同一药品不同时期出厂的编号。 此主题相关图片如下:01.jpg 图二所示现在要对A或B药品作出库处理,分别为5粒和10粒,请问录入人员在客户端录入此出库记录时,在后台如何做到按批号先后自动减库存量?(库存量少的入库较早) 此主题相关图片如下:02.jpg 麻烦各位高手提供一个思路。。。。
[此贴子已经被作者于2009-7-3 23:35:40编辑过]
|
||||
-- 作者:shaof -- 发布时间:2009/7/3 23:46:00 -- 先进先出,似乎是个很麻烦的问题,帮你顶下。 |
||||
-- 作者:cpayinyuan -- 发布时间:2009/7/4 7:32:00 -- 我的思路是这样,在品种A出库的时候, [此贴子已经被作者于2009-7-4 7:34:09编辑过]
|
||||
-- 作者:菜鸟foxtable -- 发布时间:2009/7/4 7:53:00 -- 以下是引用cpayinyuan在2009-7-4 7:32:00的发言:
我的思路是这样,在品种A出库的时候, [此贴子已经被作者于2009-7-4 7:34:09编辑过] 谢谢您提供思路,但是感觉到有点儿复杂,有没有人想到增加冗余列或者冗余表,简化这些过程? [此贴子已经被作者于2009-7-4 7:54:26编辑过]
|
||||
-- 作者:实话实说 -- 发布时间:2009/7/4 8:04:00 -- 我的理解;出库表无需录入批号,仓管必须按先进先出原则出库,与系统无关。系统根据出库品种数量自动计算与批号有关的库存。以A产品为例:出库数量大于A01批号(最先批)数量,则A02批库存数量 = A01批数量+A02批数量-出库数量。 [此贴子已经被作者于2009-7-4 8:04:26编辑过]
|
||||
-- 作者:擎天柱 -- 发布时间:2009/7/4 10:13:00 -- 加一个入库时间,批号仅是辅助供参考。根据入库时间 |
||||
-- 作者:fangling -- 发布时间:2009/7/4 11:47:00 -- 其实不要把问题搞复杂了,处方录入时一般也不会输入药品批号,药房发药时也不会按批号发药的,所以,药库表中按药品的批号不同保留不同的行是没有太大的意义。开发管理系统有时不可能完全照搬手工操作方式,即便是不同批号的药品购入价格不同,但从规范管理的角度考虑,也只能执行一个价格,实现起来也就简单得多。当然,在入库表里可以反应药品批号等信息。另外,在药库表中,除了库存数量外,最好还要增加一个“已划价数量”字段,因为划价和减库一般不是同时进行的,划价后要经过缴费、发药后才能减库。 仅供参考。 [此贴子已经被作者于2009-7-4 13:47:38编辑过]
|
||||
-- 作者:mr725 -- 发布时间:2009/7/4 12:07:00 -- 下面是按楼主的意思写的代码,不知道行不?我在命令窗口中测试过ok。(注意焦点要在出库表上 如:最后一行) Dim drs As List(Of DataRow) drs = DataTables("库存").Select("[药品名称] = \'" & currenttable.current("药品名称") & "\'","批号") dim sl as string dim n as integer For Each dr As Datarow In drs sl = sl & dr("库存量") & "|" dim k as integer = sl.split("|")(n) dim s as integer if k <= currenttable.current("数量") and currenttable.current("数量") -k>0 then s = dr("库存量") dr("库存量") = 0 n=n+1 elseif k> currenttable.current("数量") and currenttable.current("数量") -s>0 then dr("库存量") = k - (currenttable.current("数量") - s) exit for end if next 其实‘库存’表有必要按批号来反映库存量吗? 如果因价格问题进行成本核算,应该选择‘入库’表中先入库的价格即可。 [此贴子已经被作者于2009-7-4 12:07:46编辑过]
|
||||
-- 作者:菜鸟foxtable -- 发布时间:2009/7/4 12:51:00 -- 由于药品库存有一定特殊性,比如同一批号的青霉素,如果三天内曾注射过则不需要皮试,假如换了批号,即使昨天注射过,今天也要进行皮试。所以库存管理必须要有批号。 |
||||
-- 作者:mr725 -- 发布时间:2009/7/4 12:59:00 -- 8楼代码精简些: Dim drs As List(Of DataRow) drs = DataTables("库存").Select("[药品名称] = \'" & currenttable.current("药品名称") & "\'","批号") dim sl as string dim n as integer For Each dr As Datarow In drs dim k as integer = dr("库存量") dim s as integer if k <= currenttable.current("数量") and currenttable.current("数量") -k>=0 then s = dr("库存量") dr("库存量") = 0 elseif k> currenttable.current("数量") and currenttable.current("数量") -s>0 then dr("库存量") = k - (currenttable.current("数量") - s) exit for end if next |