业务问题:进销存系统中,入库,出库,以及销售以后是不是都是直接修改了库存表呀?还是根本就没有库存表,库存数量都是从上述三个表中统计得来的?如果是直接修改了库存,那么要修改入库或出库记录,还要重新获取库存,好像不是很好处理呀,
请各位大侠指点,多谢!!

解决方案 »

  1.   

    进销存通用的流程一般为: 生成采购单->审核->采购->审核->入库  这里的入库肯定是入库存,也只是已经存在的就把数量加入,没有的就加入一条记录 .
    出库、销售也差不多。只是可能没有审核这一步.入库和出库之前当然要得到当前的库存量,不然怎么出库
      

  2.   

    gobiz(拔剑容易收剑难) ( ) 信誉:100  2004-12-17 09:51:00  得分: 0  
       个人认为:
      建立一张入库表,保存材料名称,规格型号,来源,单价,数量,时间日期等……
      建立一张出库表,保存材料名称,规格型号,用途,单价,数量,时间日期等……
      建立一张库存表,保存材料名称,规格型号,单价,数量,仓库编码等……
    _________________________________________________________________________
    -------------------------------------------------------------------------
    当出库的时候,只是修改库存表码??
    如果是的话:比如
    今天我进了a商品价格为a1,明天我也进了a商品价格为a2,算我的利润?  
     
      

  3.   

    建议你们看看进销存和复式计帐法库存的东西是不应该update的,只能根据明细来计算得出报表,或者通过结算过程来生成结算表,一旦结算之后的数据是任何人都不能更改的!!
      

  4.   

    呵呵,发完我的回复看到jinjazz(近身剪(N-P攻略)) 的:
    那就是不需要库存表喽,统计很耗时间的。:)
      

  5.   

    本人刚做好一个WEB方式的库存管理、分析系统,功能非常强大,自认比金碟的要好很多,等过段时间我会提供一个DEMO
    本人是这样处理的:入库、出库、库存汇兑是分三个表,因为这样比较合理,至于jinjazz所说的不用UPDATE,那是你过程处理的问题,否则库存数量一多,效率就成一个大问题了,当然小企业单机版的话也可只要两个表
      

  6.   

    楼主好像问的是怎样实现进销存处理过程,我一般用SQL 2000 写关于入库,出库,库存的处理
    向楼上所说的一般的情况下都是三张表:入库表,出库表,商品库存表
    (如果是超市进销存管理系统那就应该还多一个(商品仓库库存表)仓库库存表用来记录商品仓库库存数量,而商品库存表是处理实际的销售库存)使用SQL Server触发器,存储过程实现以上处理过程~
    触发器主要是通过事件进行触发而被执行的,当对某一表进行诸如UPDATE、INSERT、DELETE这些操作时,SQL Server就会自动执行触发器所定义的SQL语句,从而确保对数据的处理必须符合由这些SQL 语句所定义的规则。例如:对一个商品进行入库的时候调用INSERT或者UPDATE触发器,对入库表追加记录的同时还要对该商品的库存表
         进行一个插入的更新。具体怎样写触发器你自己查阅一下相关的书吧…………
      

  7.   

    用触发器当然好,实现以上的功能非常方便。我举一个简单的SQL Server2000触发器的例子。商品表:商品代码,名称,单价,当前库存,等…………商品入库明细表:商品代码,名称,入库时间,入库数量,单价,等……… Create Trigger use_InStockIns//触发器名 ON 入库明细表 for insert as//插入触发器的例子
            insert 商品表 (商品代码,名称,单价,当前库存)
      select 商品代码,名称,单价,入库数量
    From Inserted  
    //Inserted表要注意 是系统的自动生成的一个临时表:是系统为刚刚插入的记录生成的一张临时表
    程序执行完闭自动释放内存
    上面的代码是对(入库明细表)进行一个插入的触发,当对入库明细表进行一个插入的触发系统自动执行
    一系列的:对商品代码表进行插入的SQL语句从而保证数据的完整性Create Trigger use_InStockDel ON 商品表 for delete as //删除触发器的例子
    declare @商品代码 char(10)
    select @商品代码=商品代码 from deleted 
    //deleted也是系统的临时表:是系统为刚刚删除的一条记录生成的一张临时表
    delete 入库明细表 where 商品代码=@商品代码上面的代码是对商品信息表(删除)触发器的例子,即删除某条商品信息记录时同时删除该商品信息入库明细信息
    从面保证数据完整性消除数据冗佘.其它的功能我不一一介绍了太多了…………希望楼主有所收获楼主参考一下,上面的例子我只是介绍了触发器的用处,而没有真正的发挥触发器强大的功能。
    楼主还是自己找一些相关的资料
      

  8.   

    太长了,没有时间看完.
    其实你这个问题应该问问处理财务方面的专家.
    一般是直接记录的!
    还有就是,单据要保持原有状态,不能只记录总数!
    主要是因为财务处理是需要单据来证明的,如果以后你的系统想扩充功能,比如:数据分析,销售汇总,多仓库货位盘点等等就十分麻烦的!所以我们可以 建立相关单据表,使用一套单句编码规则来记录单据类型(当然相关表就不用我来叙述了哈,自己建立相关模型)根据单据的承载金额来计算金额
    根据单句的数量来计算数量.......所有的这些都可以通过数据库管理系统来建立相关的存储过程得到相应的结果.前端开发是用于为用户提供一个gui的截面而已的,相关数据模型其实是从你的程序架构来的。
      

  9.   

    当一张入库单已经审核之后,那么假如我还想将其作废呢?因为发现了那张单的问题(这种情况是绝对有的)。如果当入库的数量直接影响到库库数量的话,那么如果再将其减除的话是有点麻烦的。上次用鼎新公司的ERP它里面就有这种功能,但不知道是怎么去实现的。因为数据库不在我们这边。
      

  10.   

    楼上不喜欢这个话题的哈,看看我的吧,;)
    http://community.csdn.net/Expert/topic/3664/3664936.xml?temp=3.068179E-02
      

  11.   


    可以参考<<管家婆>>,虽然不是最好,但是它存在于市场多年,总有它一定的道理.