C# WinForm 做单据 有引用其他表的字段的表体保存                  商品资料表:商品编号,商品名称,规格 
                  单据明细表:商品编号,数量,单价,金额 
录入界面中如下: 商品编号,商品名称,规格,数量,单价,金额 
其中商品名称和规格只是起到显示和调用商品记录作用,保存时只保存单据明细中相关字段值。 
selectCommand :
select   a.商品编号,b.商品名称,b.规格,a.数量,a.单价,a.金额 from  单据明细表   a,商品资料表   b 
where  a.商品编号=b.商品编号 sqlCommandbuilder  不支持 基于多个表的更新..这个保存应该怎么处理..还是要用存储过程...

解决方案 »

  1.   

    通过sql语句更新吧,存储过程也很好
      

  2.   

    將所有數據存放在一臨時表中組合成字符串,sql2005 varchar(max)可以達到2G。直接將字符串做為
    參數直接傳給存儲過程,批量插入或者更新比較好,達到數據的一致性
      

  3.   


                StringBuilder sb = new StringBuilder();
                if (dsPublish.Tables[1].Rows.Count > 0)
                {
                    for (int m = 0; m < dsPublish.Tables[1].Rows.Count; m++)
                    {
                        sb.Append(";insert into #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() + "')");                }
                }            DbCommand comand = db.GetStoredProcCommand("Proc_KBjitPublish");
                db.AddInParameter(comand, "@Str", DbType.String, sb.ToString());
                if (db.ExecuteNonQuery(comand) > 0)
                {
                    return true;
                }
                else
                {
                    return false;
                }