日期:2014-05-18  浏览次数:20939 次

进销存管理系统的疑问 高手请进
进销存管理系统中 一般都有一个 销售表和一个销售明细表,就像一个客户在超市里可以买多种东西一样,在C#中该如何处理呢?可以给一个思路吗?在线期待。

------解决方案--------------------
销售明细表: 商品ID 单位数量 售价 成本价 单价合计 
销售表:商品ID 销售数量 销售时间
二表间用商品ID链接,我这只是一个简单的例子.

------解决方案--------------------
首先,数据表结构应该是主表和从表的关系,如2009年1月20号销售给A客户的销售单上有B产品20个,C产品30个

那么应该建立主表,字段有:MainID,客户名称或编号,销售日期,制单人,审核人(可无)
子表字段有:ID,MainID(它和主表的MainID字段关联),产品编号,数量,单价,金额

产品表其实也是要有的,比如让用户选择产品时可以看到产品的编号和规格型号等属性

在C#里实现的话,就是表头和表体

表头即要保存到主表的内容,如:客户名称或编号,销售日期,制单人,审核人

表体即要保存到子表的内容,如:MainID(它和主表的MainID字段关联),产品编号,数量,单价,金额

表头和表体的数据表是一对多的关系,即一个客户可能同时购买多个不同的产品

你明白了吗?
------解决方案--------------------
C# code
  
sql = "insert into RdRecord (cCode,dDate,cRdCode,cWhCode,cDepCode,cMemo) values('" + txtcCode.Text + "','" + txtdDate.Text + "','" + txtcRdCode.Tag + "','" + txtcWhCode.Tag + "','" + txtcDepCode.Tag + "','" + txtcMemo.Text + "')";
        dc.UpdateObject(sql);

        string MainID = dc.GetOne("select ID from RdRecord where cCode='" + txtcCode.Text + "'").ToString();

//循环表体,保存子表的多个产品
        for (int i = 1; i < c1FG.Rows.Count; i++)
        {
          if (c1FG[i, 1] != null && c1FG[i, 5] != null)
          {
            sql = "insert into RdRecords(ID,cCode,cInvCode,iQuantity,iUnitCost) values(" + MainID + ",'" + txtcCode.Text + "','" + c1FG[i, 1].ToString() + "'," + c1FG[i, 5].ToString() + "," + c1FG[i, 6].ToString() + ")";
            dc.UpdateObject(sql);

                    }
        }

------解决方案--------------------
销售主表:单号,销售时间等
销售明细表: 单号,商品ID,单位数量,销售价 
两者用单号关联,单号一般是流水号,例如:200902030001
商品表:商品ID,成本价,库存数(也可分成:实际库存、潜在库存等)

------解决方案--------------------
参照用友软件的设计:
-------------------------------------------------------
Summary
销售发票主表

Remark
销售及应收用专用发票、普通发票、零售日报、销售调拨单、期初发票

Columns
Column Name Description Datatype Length Allow Nulls 
SBVID 销售发票主表标识 int 4 False
cSBVCode 销售发票号 varchar 30 True
cVouchType 发票类型 varchar 2 False
cSTCode 销售类型编码 varchar 2 True
dDate 单据日期 datetime 8 False
cSaleOut 出库单据号字符串 varchar 255 True
cRdCode 收发类别编码 varchar 5 True
cDepCode 部门编码 varchar 12 False
cPersonCode 业务员编码 varchar 20 True
cSOCode 销售订单号 varchar 30 True
cCusCode 客户编码 varchar 20 True
cPayCode 付款条件编码 varchar 3 True
cexch_name 币种名称 varchar 8 False
cMemo 备注 varchar 60 True
iExchRate 汇率 float 8 True
iTaxRate 表头税率 float 8 True
bReturnFlag 退货标志 bit 1 False
cBCode 银行编码 varchar 3 True
cBillVer 发票版别 varchar 2 True
cMaker 制单人 varchar 20 True
cInvalider 作废人 varchar 20 True
cVerifier 审核人 varchar 20 True
cBusType 业务类型 varchar 8 True
bFirst 应收期初标志 bit 1 False
citem_class 项目大类编码 varchar 2 True
citemcode 项目编码 varchar 20 True
cHeadCode 科目编码 varchar 15 True
cDefine1 自定义项1 varchar 20 True
cDefine2 自定义项2 varchar 20 True
cDefine3 自定义项3 varchar 20 True