/// <summary> /// 提交数据至数据表 /// </summary> /// <param name="funState">单据状态 R:读取 C:创建</param> /// <param name="souredt">Tab Pages收集过来的DT</param> /// <param name="deldt">需要删除的记录DT(单据状态为R时使用)</param> /// <param name="delOfferOrderHeadDt">记录T_OfferOrderHead.Headid,作用:针对整单据‘热签’删除操作</param> /// <returns></returns> public bool ImportDtToDb(string funState, DataTable souredt, DataTable deldt, DataTable delOfferOrderHeadDt) { var result = true; var tableName = string.Empty; try { //获取三个临时表(分别针对对应的数据表) var offerOrderDt = dbList.GetOfferOrderTemp(); var offerOrderHeadDt = dbList.GetOfferOrderHeadTemp(); var offerOrderEntryDt = dbList.GetOfferOrderEntryTemp(); //创建产成品名称临时表 var bomproductorderdt = dbList.CreateBomProductTemp(); //过滤得出不相同的‘产品名称’临时表 foreach (DataRow rows in souredt.Rows) { if (bomproductorderdt.Select("ProductName='" + rows[11] + "'").Length > 0) { continue; } var newrow = bomproductorderdt.NewRow(); newrow[0] = rows[11]; bomproductorderdt.Rows.Add(newrow); } //将数据插入至offerOrderDt临时表 offerOrderDt = GetDataToOfferOrderDt(funState, offerOrderDt, souredt.Rows[0]); foreach (DataRow rows in bomproductorderdt.Rows) { var dtlrows = souredt.Select("ProductName='" + rows[0] + "'"); //根据‘产品名称’为条件,所获得的数据进行循环插入至对应的临时表内 for (var i = 0; i < dtlrows.Length; i++) { //先插入信息至offerOrderHeadDt临时表内 offerOrderHeadDt.Merge(GetDataToOfferOrderHeadDt(Convert.ToInt32(offerOrderDt.Rows[0][0]), funState, offerOrderHeadDt, dtlrows[i])); //根据‘产品名称’获取对应的Headid值 var headid = Convert.ToInt32(offerOrderHeadDt.Select("ProductName='" + rows[0] + "'")[0][1]); //然后再将相关信息插入至offerOrderEntryDt临时表内 offerOrderEntryDt.Merge(GetDataToOfferOrderEntryDt(headid, offerOrderEntryDt, dtlrows[i])); } } //将整理好的三个临时表通过循环分别放到‘插入’ ‘更新’方法内执行; for (var i = 0; i < 3; i++) { switch (i) { //0:T_OfferOrder case 0: tableName = "T_OfferOrder"; GetDtToDb(funState, tableName, offerOrderDt); break; //1:T_OfferOrderHead case 1: tableName = "T_OfferOrderHead"; GetDtToDb(funState, tableName, offerOrderHeadDt); break; //2:T_OfferOrderEntry case 2: tableName = "T_OfferOrderEntry"; GetDtToDb(funState, tableName, offerOrderEntryDt); break; } } //最后若deldt有值的话都执行删除方法 if (deldt.Rows.Count > 0) { DeleteRecord(deldt); } //若delOfferOrderHeadDt有值的话就循环以Headid为条件 对T_OfferOrderHead 以及 T_OfferOrderEntry 对应的记录删除 if (delOfferOrderHeadDt.Rows.Count > 0) { DeleteOfferOrderHead(delOfferOrderHeadDt); } } catch (Exception) { result = false; } return(result); }