コード例 #1
0
        /// <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);
        }