Exemple #1
0
        /// <summary>
        /// 提交数据至数据表 要点:当检测到Adornid  Entryid为空,即插入,反之为更新
        /// </summary>
        /// <param name="functionName">AdornOrder:室内装修工程 MaterialOrder:室内主材单</param>
        /// <param name="sourcedt"></param>
        /// <param name="deldt">需要删除的记录DT(单据状态为R时使用)</param>
        /// <returns></returns>
        public bool ImportDtToDb(string functionName, DataTable sourcedt, DataTable deldt)
        {
            var result = true;
            //定义查询语句
            var selectvalue = string.Empty;

            try
            {
                //根据functionName参数,定义tableName变量对应的值
                var tablename = functionName == "AdornOrder" ? "T_PRO_AdornEntry" : "T_PRO_MaterialEntry";

                //根据functionName创建用于插入的临时表
                var insertdtltemp = functionName == "AdornOrder" ? dtList.Get_AdornDTtoDb() : dtList.Get_ProMaterialToDb();
                //根据functionName创建用于更新的临时表
                var updatedtltemp = functionName == "AdornOrder" ? dtList.Get_AdornDTtoDb() : dtList.Get_ProMaterialToDb();

                //若发现要进行操作的是AdornOrder,需将sourcedt内的‘装修工程类别’列删除
                if (functionName == "AdornOrder")
                {
                    sourcedt.Columns.Remove("装修工程类别");
                }

                //获取Adornid(EntryId)为空的记录(用于插入使用)
                selectvalue = functionName == "AdornOrder" ? "Adornid IS NULL" : "EntryID is null";
                var dtlnullrows = sourcedt.Select(selectvalue);

                for (var i = 0; i < dtlnullrows.Length; i++)
                {
                    var newrow = insertdtltemp.NewRow();
                    for (var j = 0; j < insertdtltemp.Columns.Count; j++)
                    {
                        if (j == 1)
                        {
                            //创建新的Adornid(EntryId)
                            newrow[j] = Maxid(tablename, null);
                        }
                        else
                        {
                            newrow[j] = dtlnullrows[i][j];
                        }
                    }
                    insertdtltemp.Rows.Add(newrow);
                }

                //获取Adornid(EntryId)不为空的记录(用于更新使用)
                selectvalue = functionName == "AdornOrder" ? "Adornid IS not NULL" : "EntryID is not null";
                var dtlnotnullrows = sourcedt.Select(selectvalue);

                for (var i = 0; i < dtlnotnullrows.Length; i++)
                {
                    var newrow = updatedtltemp.NewRow();
                    for (var j = 0; j < updatedtltemp.Columns.Count; j++)
                    {
                        newrow[j] = dtlnotnullrows[i][j];
                    }
                    updatedtltemp.Rows.Add(newrow);
                }

                //最后将得出的结果进行插入或更新
                if (insertdtltemp.Rows.Count > 0)
                {
                    Importdt(tablename, insertdtltemp);
                }
                if (updatedtltemp.Rows.Count > 0)
                {
                    UpEntrydt(tablename, updatedtltemp);
                }

                //若deldt有值的话都执行删除方法
                if (deldt?.Rows.Count > 0)
                {
                    generateDt.Del(functionName, deldt);
                }
            }
            catch (Exception)
            {
                result = false;
            }
            return(result);
        }