进销存管理系统的疑问 高手请进
进销存管理系统中 一般都有一个 销售表和一个销售明细表,就像一个客户在超市里可以买多种东西一样,在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