예제 #1
0
        //翻译DataTable中的枚举
        private void TransferEnum(DataTable dt, S_R_DataSet dataSet)
        {
            //if (dtFields == null)
            //    return;

            UIFO uiFO = new UIFO();

            foreach (var field in dataSet.S_R_Field)
            {
                string code    = field.Code;
                string enumKey = field.EnumKey;
                if (string.IsNullOrEmpty(enumKey))
                {
                    continue;
                }
                //uiFO.TransferEnum(dt, code, dataSet.ConnName, dataSet.TableNames.Split(',')[0], enumKey);
                uiFO.TransferEnum(dt, dataSet.ConnName, dataSet.TableNames.Split(',')[0], code, enumKey);
            }
        }
예제 #2
0
        public JsonResult Clone(string defID)
        {
            var def    = entities.Set <S_R_Define>().SingleOrDefault(c => c.ID == defID);
            var newDef = new S_R_Define();

            FormulaHelper.UpdateModel(newDef, def);
            newDef.ID = FormulaHelper.CreateGuid();
            entities.Set <S_R_Define>().Add(newDef);

            foreach (var dataset in def.S_R_DataSet.ToList())
            {
                var newDataSet = new S_R_DataSet();
                FormulaHelper.UpdateModel(newDataSet, dataset);
                newDataSet.ID       = FormulaHelper.CreateGuid();
                newDataSet.DefineID = newDef.ID;
                entities.Set <S_R_DataSet>().Add(newDataSet);

                foreach (var field in dataset.S_R_Field.ToList())
                {
                    var newField = new S_R_Field();
                    FormulaHelper.UpdateModel(newField, field);
                    newField.ID        = FormulaHelper.CreateGuid();
                    newField.DataSetID = newDataSet.ID;
                    entities.Set <S_R_Field>().Add(newField);
                }
            }

            newDef.Code          += "copy";
            newDef.Name          += "(副本)";
            newDef.ModifyTime     = null;
            newDef.ModifyUserID   = "";
            newDef.ModifyUserName = "";
            var user = FormulaHelper.GetUserInfo();

            newDef.CreateUserID   = user.UserID;
            newDef.CreateUserName = user.UserName;
            newDef.CreateTime     = DateTime.Now;
            entities.SaveChanges();
            return(Json(""));
        }
예제 #3
0
        private XmlNode GetDataSet(string reportCode, S_R_DataSet dataSet)
        {
            StringBuilder sbCommendText = new StringBuilder();
            StringBuilder sbData        = new StringBuilder();
            SQLHelper     sqlHelper     = SQLHelper.CreateSqlHelper(dataSet.ConnName);
            //去掉没被替换部分
            Regex  reg = new Regex("\\{[0-9a-zA-Z_\\.]*\\}");
            string sql = reg.Replace(dataSet.Sql, (Match m) =>
            {
                return("");
            });
            DataTable dt = sqlHelper.ExecuteDataTable(sql, 0, 10, CommandType.Text);

            TransferEnum(dt, dataSet);

            List <Dictionary <string, string> > dicFieldList = new List <Dictionary <string, string> >();

            //if (fieldList != null)
            //{
            foreach (var field in dataSet.S_R_Field)
            {
                Dictionary <string, string> dic = new Dictionary <string, string>();
                dic.Add("Code", field.Code);
                dic.Add("Name", field.Name);
                dic.Add("Type", field.Type);
                dicFieldList.Add(dic);
            }
            //}
            //else
            //{
            //    foreach (DataColumn col in dt.Columns)
            //    {
            //        Dictionary<string, string> dic = new Dictionary<string, string>();

            //        dic.Add("Code", col.ColumnName);
            //        dic.Add("Name", col.ColumnName);
            //        dic.Add("Type", col.DataType.FullName);
            //        dicFieldList.Add(dic);
            //    }
            //}

            //xml数据格式
            string fieldFormat = "";


            foreach (var dic in dicFieldList)
            {
                string reportFieldType = "String";
                string fieldType       = dic["Type"].Replace("System.", "");
                if (fieldType.StartsWith("Int"))
                {
                    reportFieldType = "Integer";
                }
                else if (fieldType == "Double")
                {
                    reportFieldType = "Decimal";
                }
                fieldFormat += string.Format("@{0}({1}),", dic["Code"], reportFieldType);
            }

            fieldFormat = fieldFormat.Trim(',');



            foreach (DataRow row in dt.Rows)
            {
                sbData.Append("<Row");
                foreach (DataColumn col in dt.Columns)
                {
                    sbData.AppendFormat(" {0}=\"{1}\"", col.ColumnName, row[col].ToString().Replace('\"', '\''));
                }
                sbData.Append("></Row>");
            }
            sbCommendText.Append("<Query>\n");
            sbCommendText.Append("<ElementPath>Root/Row{" + fieldFormat + "}</ElementPath>");
            sbCommendText.Append("<XmlData>");
            sbCommendText.Append("<Root>");
            sbCommendText.Append(sbData.ToString());
            sbCommendText.Append("</Root>");
            sbCommendText.Append("</XmlData>");
            sbCommendText.Append("</Query>");


            string      path      = HttpContext.Server.MapPath("/") + "AutoReport/Tmpl/dataSet.xml";
            XmlDocument sourceDoc = new XmlDocument();

            sourceDoc.Load(path);

            //数据源名称
            var nodeDataSourceName = sourceDoc.GetElementsByTagName("DataSourceName")[0];

            nodeDataSourceName.InnerXml = reportCode;

            //数据集
            var nodeDataSet = sourceDoc.GetElementsByTagName("DataSet")[0];

            nodeDataSet.Attributes["Name"].Value = reportCode;

            //查询语句
            var nodeCommentText = sourceDoc.GetElementsByTagName("CommandText")[0];

            nodeCommentText.InnerXml = HttpContext.Server.HtmlEncode(sbCommendText.ToString());

            //设置字段集
            var list   = sourceDoc.GetElementsByTagName("Fields");
            var fields = list[0];
            var node   = fields.FirstChild;

            fields.RemoveAll();

            foreach (var dic in dicFieldList)
            {
                var newNode = node.Clone();
                newNode.Attributes["Name"].Value = dic["Name"];
                newNode.FirstChild.InnerXml      = dic["Code"];
                newNode.LastChild.InnerXml       = dic["Type"];
                fields.AppendChild(newNode);
            }

            return(sourceDoc.GetElementsByTagName("DataSet")[0].Clone());
        }