Пример #1
0
        /// <summary>
        /// 更新报表的数据列
        /// </summary>
        /// <param name="input"></param>
        private void SetReportColumns(ReportDataSourceInputDto input)
        {
            var template = _ReportTemplateManager.GetReportTemplateByIdAsync(input.Template_Id);

            XmlDocument xmlReport = new XmlDocument();

            xmlReport.Load(System.AppDomain.CurrentDomain.BaseDirectory + template.Result.FilePath);
            XmlNode nodeDictionary = xmlReport.SelectSingleNode("/Report/Dictionary");

            DelNodeDataSource(nodeDictionary, input.TableName);

            XmlNode nodeDataSource = xmlReport.CreateElement("TableDataSource");

            SetNodeAttribute(nodeDataSource, "Name", input.TableName);
            SetNodeAttribute(nodeDataSource, "ReferenceName", "ds_" + input.TableName + "." + "dt_" + input.TableName);
            SetNodeAttribute(nodeDataSource, "DataType", "System.Int32");
            SetNodeAttribute(nodeDataSource, "Enabled", "true");

            var columns = GetColumnsByDataSource(input);

            foreach (DataColumn column in columns)
            {
                XmlNode nodeColumn = xmlReport.CreateElement("Column");
                SetNodeAttribute(nodeColumn, "Name", column.ColumnName);
                SetNodeAttribute(nodeColumn, "DataType", column.DataType.FullName);

                nodeDataSource.AppendChild(nodeColumn);
            }

            nodeDictionary.AppendChild(nodeDataSource);

            xmlReport.Save(System.AppDomain.CurrentDomain.BaseDirectory + template.Result.FilePath);
        }
Пример #2
0
        public async Task <bool> CreateReportDataSource(ReportDataSourceInputDto input)
        {
            var entity = input.MapTo <ReportDataSource>();

            try
            {
                SetReportColumns(input);
            }
            catch (Exception ex)
            {
                throw new UserFriendlyException(ex.Message);
            }

            return(await _ReportDataSourceManager.CreateReportDataSourceAsync(entity));
        }
Пример #3
0
        public async Task <bool> UpdateReportDataSource(ReportDataSourceInputDto input)
        {
            var entity = await _ReportDataSourceManager.GetReportDataSourceByIdAsync(input.Id);

            input.MapTo(entity);

            try
            {
                SetReportColumns(input);
            }
            catch (Exception ex)
            {
                throw new UserFriendlyException(ex.Message);
            }

            return(await _ReportDataSourceManager.UpdateReportDataSourceAsync(entity));
        }
Пример #4
0
        /// <summary>
        /// 获取列
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        private DataColumnCollection GetColumnsByDataSource(ReportDataSourceInputDto input)
        {
            string sql  = input.CommandText;
            string conn = ConfigurationManager.ConnectionStrings[input.ConnkeyName].ConnectionString;

            //List<string> resultP = GetParamsBySql(sql);
            List <string> resultP = GetParamsByStr(input.DataParams);

            OracleParameter[] paras = new OracleParameter[resultP.Count];
            for (int i = 0; i < resultP.Count; i++)
            {
                paras[i] = new OracleParameter {
                    ParameterName = resultP[i], Value = ""
                };
            }
            var table = OracleDbHelper.ExecuteDataset(conn,
                                                      sql,
                                                      input.CommandType == 1 ? System.Data.CommandType.Text : System.Data.CommandType.StoredProcedure,
                                                      paras);

            return(table.Tables[0].Columns);
        }