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

解决方案 »

  1.   

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

  2.   

    首先,数据表结构应该是主表和从表的关系,如2009年1月20号销售给A客户的销售单上有B产品20个,C产品30个那么应该建立主表,字段有:MainID,客户名称或编号,销售日期,制单人,审核人(可无)
    子表字段有:ID,MainID(它和主表的MainID字段关联),产品编号,数量,单价,金额产品表其实也是要有的,比如让用户选择产品时可以看到产品的编号和规格型号等属性在C#里实现的话,就是表头和表体表头即要保存到主表的内容,如:客户名称或编号,销售日期,制单人,审核人表体即要保存到子表的内容,如:MainID(它和主表的MainID字段关联),产品编号,数量,单价,金额表头和表体的数据表是一对多的关系,即一个客户可能同时购买多个不同的产品你明白了吗?
      

  3.   

     
    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);                                           }
                    }
      

  4.   

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

  5.   

    参照用友软件的设计:
    -------------------------------------------------------
    Summary
    销售发票主表Re
    销售及应收用专用发票、普通发票、零售日报、销售调拨单、期初发票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  
      cDefine4 自定义项4  datetime 8  True  
      cDefine5 自定义项5  int 4  True  
      cDefine6 自定义项6  datetime 8  True  
      cDefine7 自定义项7  float 8  True  
      cDefine8 自定义项8  varchar 4  True  
      cDefine9 自定义项9  varchar 8  True  
      cDefine10 自定义项10  varchar 60  True  
      bPayMent 现付现结标志  varchar 20  True  
      iDisp 是否先发货  smallint 2  True  
      cCusName 客户名称  varchar 120  True  
      cDLCode 发货退货单号  varchar 255  True  
      cAccounter 记账人  varchar 20  True  
      cChecker 复核人  varchar 20  True  
      iVTid 单据模版号  int 4  False  
      bIAFirst 存货期初标志  bit 1  True  
      ufts 时间戳  timestamp 8  True  
      cCreChpName 信用审核人  varchar 20  True  
      cInfoTypeCode 金税对应发票号  varchar 20  True  
      cSource 单据来源  varchar 4  True  
      cDefine11 自定义项11  varchar 120  True  
      cDefine12 自定义项12  varchar 120  True  
      cDefine13 自定义项13  varchar 120  True  
      cDefine14 自定义项14  varchar 120  True  
      cDefine15 自定义项15  int 4  True  
      cDefine16 自定义项16  float 8  True  
      cSCCode 发运方式  varchar 2  True  
      cShipAddress 发货地址  varchar 200  True  
    ----------------------------------------
    Summary
    销售发票子表Re
    销售及应收用专用发票、普通发票、零售日报、销售调拨单、期初发票Columns
      Column Name Description Datatype Length Allow Nulls 
      SBVID 销售发票主表标识  int 4  False  
      AutoID 销售发票子表标识  int 4  False  
      cWhCode 仓库编码  varchar 10  True  
      cInvCode 存货编码  varchar 20  False  
      iQuantity 数量  float 8  True  
      iNum 辅计量数量  float 8  True  
      iQuotedPrice 报价  float 8  True  
      iUnitPrice 原币无税单价  float 8  True  
      iTaxUnitPrice 原币含税单价  float 8  True  
      iMoney 原币无税金额  money 8  True  
      iTax 原币税额  money 8  True  
      iSum 原币价税合计  money 8  True  
      iDisCount 原币折扣额  money 8  True  
      iNatUnitPrice 本币无税单价  float 8  True  
      iNatMoney 本币无税金额  money 8  True  
      iNatTax 本币税额  money 8  True  
      iNatSum 本币价税合计  money 8  True  
      iNatDisCount 本币折扣额  money 8  True  
      iSBVID 原销售发票主表标识  int 4  True  
      iMoneySum 累计本币收款金额  float 8  True  
      iExchSum 累计原币收款金额  float 8  True  
      cClue 凭证线索号  varchar 30  True  
      cIncomeSub 销售收入科目编码  varchar 15  True  
      cTaxSub 销售税金科目编码  varchar 15  True  
      dSignDate 凭证日期  datetime 8  True  
      cMemo 备注  varchar 60  True  
      iBatch 批次  int 4  True  
      cBatch 批号  varchar 20  True  
      bSettleAll 结算标志  bit 1  True  
      cFree1 存货自由项1  varchar 20  True  
      cFree2 存货自由项2  varchar 20  True  
      RdsID 收发记录子表标识  int 4  True  
      iTB 退补标志  tinyint 1  True  
      dvDate 失效日期  datetime 8  True  
      TBQuantity 退补数量  real 4  True  
      TBNum 退补辅计量数量  real 4  True  
      iSOsID 销售订单子表标识  int 4  True  
      iDLsID 发货退货单子表标识  int 4  True  
      KL 扣率  float 8  True  
      KL2 二次扣率  float 8  True  
      cInvName 存货名称  varchar 60  True  
      iTaxRate 税率  float 8  True  
      cDefine22 表体自定义项22  varchar 60  True  
      cDefine23 表体自定义项23  varchar 60  True  
      cDefine24 表体自定义项24  varchar 60  True  
      cDefine25 表体自定义项25  varchar 60  True  
      cDefine26 表体自定义项26  float 8  True  
      cDefine27 表体自定义项27  float 8  True  
      fOutQuantity 累计出库数量  float 8  True  
      fOutNum 累计出库辅计量数量  float 8  True  
      cItemCode 项目编码  varchar 20  True  
      cItem_class 项目大类编码  varchar 10  True  
      fSaleCost 零售单价  float 8  True  
      fSalePrice 零售金额  float 8  True  
      cItemName 项目名称  varchar 60  True  
      cItem_CName 项目大类名称  varchar 20  True  
      cFree3 存货自由项3  varchar 20  True  
      cFree4 存货自由项4  varchar 20  True  
      cFree5 存货自由项5  varchar 20  True  
      cFree6 存货自由项6  varchar 20  True  
      cFree7 存货自由项7  varchar 20  True  
      cFree8 存货自由项8  varchar 20  True  
      cFree9 存货自由项9  varchar 20  True  
      cFree10 存货自由项10  varchar 20  True  
      iInvExchRate 换算率  userdecimal 13  True  
      cUnitID 计量单位编码  varchar 10  True  
      cDefine28 表体自定义项28  varchar 120  True  
      cDefine29 表体自定义项29  varchar 120  True  
      cDefine30 表体自定义项30  varchar 120  True  
      cDefine31 表体自定义项31  varchar 120  True  
      cDefine32 表体自定义项32  varchar 120  True  
      cDefine33 表体自定义项33  varchar 120  True  
      cDefine34 表体自定义项34  int 4  True  
      cDefine35 表体自定义项35  int 4  True  
      cDefine36 表体自定义项36  datetime 8  True  
      cDefine37 表体自定义项37  datetime 8  True  
      dMDate 生产日期  datetime 8  True  
      iPBVsID 采购发票子表标识  int 4  True  
      cCode 入库单据号  varchar 30  True  
      cSoCode 销售订单号  varchar 30  True  
      bgsp 质检标记  bit 1  True  
      iPPartSeqID PTO母件顺序号  int 4  True  
      iPPartID 母件物料ID  int 4  True  
      iPPartQty 母件数量  userdecimal 13  True  
      cContractID 合同号  varchar 64  True  
      cContractTagCode 合同标的  varchar 64  True  
      cContractRowGuid 合同cGuid  uniqueidentifier 16  True  
      iMassDate 保质期  int 4  True  
      cMassUnit 保质期单位  smallint 2  True  
      bQANeedCheck 是否质检  bit 1  False  
      bQAUrgency 是否急料  bit 1  False  
      cCusInvCode 客户存货编码  varchar 40  True  
      cCusInvName 客户存货名称  varchar 100  True  
      

  6.   

    什么叫在c#中实现,你是说界面的实现
    gridview与detailview的双表嵌套.
      

  7.   

    这个不是什么C#的问题,C#只是如何开发的,你先要搞清楚进销存的流程,这个是非常重要的。确立好流程后,就着手如何设计数据库表,就是设计多少个表来实现超市的流程,比如销售表,在超市里,一般是POS扫描销售的,就要涉及到销售表的主从表了。确定了主从表后,就要确定字段,因为字段的确定与以后的报表的查询有相当大的关系的。销售表的主表的字段有:id(唯一内部id)、code(单据的编号,也称流水号)、listdate(单据的日期,也是制单日期,客户id(与客户资料的id关联),备注;从表的字段有:id(唯一内部id)、id1(与主表的id关联)、商品id、数量、单价、备注。这只是其中的一对主从表,然后才用C#开发界面,与后台数据库关联起来的。至于进销存的流程,可参看:http://blog.csdn.net/fstao/archive/2008/02/12/2089163.aspx