报表添加字段

栏目:云星空知识作者:金蝶来源:金蝶云社区发布:2024-09-16浏览:1

报表添加字段


  1. 继承原报表插件,重写BuilderReportSqlAndTempTable方法

  2. 创建临时表,先调用方法获取原报表数据放入自己的临时表,再查询数据放入系统临时表


[Description("xxx_扩展")]
    [HotUpdate]
    public class xxxxxx_Extend : APIVDetailReportService
    {
        private string[] TempTableName;
        
        public override void BuilderReportSqlAndTempTable(IRptParams filter, string tableName)
        {
            DynamicObject customFilter = filter.FilterParameter.CustomFilter;

        
                //创建临时表用于保存自己的数据
                IDBService dbservice = Kingdee.BOS.App.ServiceHelper.GetService<IDBService>();
                TempTableName = dbservice.CreateTemporaryTableName(this.Context, 1);
                string strTable = TempTableName[0];

                //调用基类方法,获取初步的查询结果
                base.BuilderReportSqlAndTempTable(filter, strTable);

                //对初步的查询结果处理,然后回填到默认的存放查询结果到临时表 
                StringBuilder sb = new StringBuilder();

                string strSql = @"/*dialect*/select t1.*,t2.FINSTOCKBUSTYPE as F_swaw_RKYWLX  into {0} 
                             from  {1} t1 
                             left join  T_AP_PAYABLE  t2  on t1.FBILLNO = t2.FBILLNO and t1.FFORMID='AP_Payable' and t1.FBILLNO<>''
                             left join T_BD_MATERIAL mat  on mat.FMATERIALID=t1.FMaterialID
                             left join t_BD_MaterialBase t3 on t3.FMATERIALID=mat.FMATERIALID  ";
                sb.AppendFormat(strSql, tableName, strTable);
          
               // Kingdee.BOS.Log.FileLog.WriteLogFile("D:/Project/log.text", "sql:" + sb.GetString());

                DBUtils.Execute(this.Context, sb.ToString());          
           
        }

      
       
        public override List<SummaryField> GetSummaryColumnInfo(IRptParams filter)
        {
            var result = base.GetSummaryColumnInfo(filter);
            result.Add(new SummaryField("F_JDSL_Amount", BOSEnums.Enu_SummaryType.SUM));
            result.Add(new SummaryField("F_JDSL_Tax", BOSEnums.Enu_SummaryType.SUM));
            return result;

        }

        public override void CloseReport()
        {

            //删除临时表
            if (TempTableName== null || TempTableName.Length == 0)
            {
                return;
            }
            IDBService dbservice = ServiceHelper.GetService<IDBService>();
            dbservice.DeleteTemporaryTableName(this.Context, TempTableName);
            base.CloseReport();
        }
    }


 参考链接:报表二次开发添加自定义字段的指导方案

报表添加字段

继承原报表插件,重写BuilderReportSqlAndTempTable方法创建临时表,先调用方法获取原报表数据放入自己的临时表,再查询数据放入系统临时表...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息