问题描述
C#WinForm做单据有引用其他表的字段的表体保存商品资料表:商品编号,商品名称,规格单据明细表:商品编号,数量,单价,金额录入界面中如下:商品编号,商品名称,规格,数量,单价,金额其中商品名称和规格只是起到显示和调用商品记录作用,保存时只保存单据明细中相关字段值。selectCommand:selecta.商品编号,b.商品名称,b.规格,a.数量,a.单价,a.金额from单据明细表a,商品资料表bwherea.商品编号=b.商品编号sqlCommandbuilder不支持基于多个表的更新..这个保存应该怎么处理..还是要用存储过程...
解决方案
解决方案二:
通过sql语句更新吧,存储过程也很好
解决方案三:
將所有數據存放在一臨時表中組合成字符串,sql2005varchar(max)可以達到2G。直接將字符串做為參數直接傳給存儲過程,批量插入或者更新比較好,達到數據的一致性
解决方案四:
StringBuildersb=newStringBuilder();if(dsPublish.Tables[1].Rows.Count>0){for(intm=0;m<dsPublish.Tables[1].Rows.Count;m++){sb.Append(";insertinto#tbValue(valueb,valuec,valued,wono,businessid,partno,deliverydate,deliverytime)");sb.Append("values("+dsPublish.Tables[1].Rows[m]["valueb"].ToString()+","+dsPublish.Tables[1].Rows[m]["valuec"].ToString()+","+dsPublish.Tables[1].Rows[m]["valued"].ToString()+",'"+dsPublish.Tables[1].Rows[m]["wono"].ToString()+"','"+dsPublish.Tables[1].Rows[m]["businessid"].ToString()+"','"+dsPublish.Tables[1].Rows[m]["partno"].ToString()+"','"+dsPublish.Tables[1].Rows[m]["deliverydate"].ToString()+"','"+dsPublish.Tables[1].Rows[m]["deliverytime"].ToString()+"')");}}DbCommandcomand=db.GetStoredProcCommand("Proc_KBjitPublish");db.AddInParameter(comand,"@Str",DbType.String,sb.ToString());if(db.ExecuteNonQuery(comand)>0){returntrue;}else{returnfalse;}
解决方案五:
你的表设计有点问题商品资料表:商品编号,商品名称,规格单据表:单据号,客户,销售时间,总金额单据明细表:单据号,商品编号,商品名称,规格,数量,单价,金额