只要能解决100RMB也没问题的!

解决方案 »

  1.   

    1、学习sql的基本使用,t-sql语法。
    2、了解整个流程
      

  2.   

    gmlxf(烛光) 兄讲的有道理,可是一般的书上都没有整个流程的介绍,我主要是不太清楚怎样设计才更有效率,我怕设计不合理,到时候要重新来过!
    一个人学sql有一点时间了,很迷茫啊...
      

  3.   

    那位大虾能发一份表结构的脚本,
    滴水之恩当涌泉相报
    Email:
    [email protected]
      

  4.   

    --简单示例:--数据测试环境
    create table 物料明细表(物料ID varchar(6) primary key
    ,名称 varchar(8) not null
    ,规格 varchar(10)
    ,颜色 varchar(4)
    ,单位 varchar(4)
    ,所属类别 varchar(6))create table 进仓主表 (进仓ID varchar(20) primary key
    ,供应商ID varchar(10)
    ,进仓日期 datetime
    ,原凭证号 varchar(10)
    ,入库类型 int)create table 进仓明细表 (进仓ID varchar(20) not null
    ,物料ID varchar(6) not null
    ,数量 decimal(20,2))alter table 进仓明细表 add constraint PK_进仓明细表 PRIMARY KEY CLUSTERED (进仓ID,物料ID)create table 出仓主表 (出仓ID varchar(20) primary key
    ,部门ID varchar(10)
    ,领料日期 datetime
    ,领料单号 varchar(10)
    ,出库类型 varchar(1))create table 出仓明细表 (出仓ID varchar(20) not null
    ,物料ID varchar(6) not null
    ,数量 decimal(20,2))
    alter table 出仓明细表 add constraint PK_出仓明细表 PRIMARY KEY CLUSTERED (出仓ID,物料ID)
    go--添加表间关系
    ALTER TABLE dbo.进仓明细表 ADD CONSTRAINT FK_进仓明细表_进仓主表 FOREIGN KEY
    (进仓ID) REFERENCES dbo.进仓主表(进仓ID) 
     ON UPDATE CASCADE
     ON DELETE CASCADEALTER TABLE dbo.进仓明细表 ADD CONSTRAINT FK_进仓明细表_物料明细表 FOREIGN KEY
    (物料ID) REFERENCES dbo.物料明细表(物料ID) 
     ON UPDATE CASCADE
     ON DELETE CASCADEALTER TABLE dbo.出仓明细表 ADD CONSTRAINT FK_出仓明细表_出仓主表 FOREIGN KEY
    (出仓ID) REFERENCES dbo.出仓主表(出仓ID) 
     ON UPDATE CASCADE
     ON DELETE CASCADEALTER TABLE dbo.出仓明细表 ADD CONSTRAINT FK_出仓明细表_物料明细表 FOREIGN KEY
    (物料ID) REFERENCES dbo.物料明细表(物料ID) 
     ON UPDATE CASCADE
     ON DELETE CASCADEgo
    --为数据数据处理添加视图
    create view qry进仓单
    as
    select b.物料ID,a.进仓日期,进仓数量=sum(b.数量)
    from 进仓主表 a join 进仓明细表 b on a.进仓ID=b.进仓ID
    group by b.物料ID,a.进仓日期go
    create view qry出仓单
    as
    select b.物料ID,出仓日期=a.领料日期,出仓数量=sum(b.数量)
    from 出仓主表 a join 出仓明细表 b on a.出仓ID=b.出仓ID
    group by b.物料ID,a.领料日期go
    create view qry进出记录
    as
    select 物料ID=isnull(a.物料ID,b.物料ID)
    ,a.进仓日期,进仓数量=sum(a.进仓数量)
    ,b.出仓日期,出仓数量=sum(b.出仓数量)
    ,日期=isnull(a.进仓日期,b.出仓日期)
    from qry进仓单 a full join qry出仓单 b
    on a.物料ID=b.物料ID and a.进仓日期=b.出仓日期
    group by isnull(a.物料ID,b.物料ID),a.进仓日期,b.出仓日期,isnull(a.进仓日期,b.出仓日期)go
    --初始化数据
    insert into 物料明细表
    select 'A-001','皮纸','20×30×50','红','张','纸'
    union all select 'B-002','磁铁','20×10×50','','块','五金'insert into 进仓主表
    select 'J-20031015-001','SA001','2003-10-15','123456',1
    union all select 'J-20031015-002','SA002','2003-10-15','123457',1
    union all select 'J-20031017-001','SA002','2003-10-17','123456',2insert into 进仓明细表
    select 'J-20031015-001','A-001',200
    union all select 'J-20031015-002','B-002',99
    union all select 'J-20031017-001','A-001',150.5insert into 出仓主表
    select 'C-20031015-001','Dept_P','2003-10-15','1111111','P'
    union all select 'C-20031016-001','Dept_P','2003-10-16','1111112','P'insert into 出仓明细表
    select 'C-20031015-001','A-001',50
    union all select 'C-20031016-001','A-001',50
    go
    --得到要求的结果
    --进出记录表
    select a.*
    ,进仓日期=convert(varchar(10),b.进仓日期,120),b.进仓数量
    ,出仓日期=convert(varchar(10),b.出仓日期,120),b.出仓数量
    ,当前库存=isnull((select sum(进仓数量) from qry进仓单 where 物料ID=a.物料ID and 进仓日期<=b.日期),0)
    -isnull((select sum(出仓数量) from qry出仓单 where 物料ID=a.物料ID and 出仓日期<=b.日期),0)
    from 物料明细表 a left join qry进出记录 b on a.物料ID=b.物料ID
    order by a.物料ID,b.日期--当前库存表
    select a.*,b.当前库存
    from 物料明细表 a left join (
    select 物料ID,当前库存=isnull(sum(进仓数量),0)-isnull(sum(出仓数量),0) from qry进出记录 group by 物料ID
    )b on a.物料ID=b.物料ID
    order by a.物料IDgo
    --删除测试环境
    drop view qry进仓单,qry出仓单,qry进出记录
    drop table 进仓明细表,出仓明细表,物料明细表,进仓主表,出仓主表
      

  5.   

    首先说明一下我的开发环境,VB.NET+SQL2000+Win2000
    用VB.NET开发进销存合适吗?我听说这类软件大多是用delphi,pb作的,是吗?比如现在我要生成采购单,根据请购单和库存中物品的数量:
    请购数量-(当前库存量-下限)
    目前还没有考虑在途库存量,客户保留量,产出率,废品率,订购倍数...(这些词都是书上看的不是很理解)
    我用一条sql语句得到了要采购的物品和数量,显示在一个Datagrid中,我让操作者能修改采购的数量(这样合理吗?),现在就有2个问题:1。如果得到的采购量是负数怎么处理?直接忽略掉,不处理,但是我要把请购单里的状态字段设置为“下达"来确定该请购物品已经被处理,如果多个部门同时申请了一种物品,我在采购单上用的是对这种物品的统计,如果操作者把采购数量调小了,我该更新哪几条请购记录?2.我在datagrid中显示了很多采购单表里面没有的字段,主要是想给用户提供更多的参考,但是并不保存他们,比如说金额,当前库存量等,用什么方法把Datagrid里面的记录更新到数据库去,我现在是一条条地读,然后一条一条地insert into Table_caigou()...
    你们是怎样处理这种情况的?
      

  6.   

    最关键的是每月(或者一段时间)的盘库操作和进销存。
    和盘库操作相关的计算库存程序。
    还有就是每种操作都应该有相应的逆操作。
    有时候会有多个仓库,应该有调货单。
    这样一个系统通用的价值RMB 5k--20k不等。
    专用的40k--200k不等。还是不开放源代码的。
    因为需要多个程序员几个月的调研和编写。当然还要维护和修改。
    如果你是新手,建议你买一个。
      

  7.   

    楼主不只是想做进销存了,一个简单的MRP啊。
      

  8.   

    同意楼上的。我现在就是做这个的C#+Delphi+Sql server2000 。很多了表了,返点了,调拨了、其它出入库、传真账、盘点等 太多了。慢慢来。
      

  9.   

    建议到wwww.newhua.com上下载一个ERP的试用版看看
      

  10.   

    谢谢txlicenhe(马可) ( ) 信誉:165 
    再问:
    如果一张采购单里有些物品没货,有些物品本来是想采购100吨,但实际只买了80吨,这种情况该怎么办?对于这种情况我该把采购单表里面的状态设置成什么呢?-是“完成”还是不变化,还是直接把原来的采购单的数量改成现在的实际采购的数量!
    我入库时是按一个采购单一个采购单来入库的,是不是要一条一条地入库啊,
    那样用户不是很麻烦(一条条地输进去),
    晚上接贴!