横向合计代码 锐浪报表_金蝶K3CLOUD报表开发

K3CLOUD报表分SQL直接账表、简单账表、树形账表、分页账表。SQL直接账表比较简单,如果有动态列(比如账期,是不固定的)、复杂的计算,就需要用其它三个报表了,此文以简单账表为列。

报表服务端取数插件是继承自AbstractSysReportPlugIn,它有几个常用的方法:

GetReportTitles: 为报表头字段赋值,筛选窗的条件要在报表头显示,需要方法中进行赋值

GetReportHeaders:构建报表体的列

BuilderReportSqlAndTempTable:报表数据产生逻辑,可以在此调用SQL,并把数据插入临时表。现有报表的二次开发,可以在此方法中把临时表表名传递给存储过程对数据再次处理。

GetSummaryColumnInfo:设置合计列

a5a9655bbe0493563bd228c6b1f5e184.png

1、如何对现有报表做二次修改。

需要继承原始报表取数插件,重写虚方法BuilderReportSqlAndTempTable

    public override void BuilderReportSqlAndTempTable(IRptParams filter, string tableName)    {
          IDBService service = ServiceHelper.GetService();      this.customRptTempTableNames = service.CreateTemporaryTableName(base.Context, 1);      string text = this.customRptTempTableNames[0];      base.BuilderReportSqlAndTempTable(filter, text);      using (new SessionScope())      {
            StringBuilder stringBuilder = new StringBuilder();        string format = "/*dialect*/SELECT t1.*,t1.fseq as FBILLSEQ,cast( '' as nvarchar(255)) AS F_PXJT_ProjectName,cast( '' as nvarchar(255)) AS F_PXJT_ClientPO,cast( '' as nvarchar(255)) AS F_PXJT_BusinessName INTO {0} FROM  {1} T1 ";        stringBuilder.AppendFormat(format, tableName, text);        DBUtils.Execute(base.Context, stringBuilder.ToString());        List list = new List();        list.Add(new SqlParam("@tableName", KDDbType.String, tableName));        DBUtils.ExecuteStoreProcedure(base.Context, "SP_RptFix", list);      }    }

此方法参数tableName,就是报表的临时表,报表结果就保存在这个表中。

2、动态列的报表实现。报表窗体中,可以不添加列,把存储过程中的列自动填充进来。需要继承SysReportBaseService。

重写虚方法BuilderReportSqlAndTempTable,把tableName传递给存储过程,在存储过程中用select * into {tableName} from的方式把数据传递回来

    [Description("物料项目周需求分析服务端插件")]    public class MtrlProjReqAnalysis:SysReportBaseService    {
            bool _firstRun = true;        string _sql = "EXEC [PXJT_INV_MtrlRequire] @projName='{0}',@isRpt=1,@rptTmpTableName='{1}'";        ReportHeader _rptHeader = new ReportHeader();        public override void Initialize()        {
                base.Initialize();            this.ReportProperty.ReportType = ReportType.REPORTTYPE_NORMAL;            this.ReportProperty.ReportName= new Kingdee.BOS.LocaleValue("物料项目周需求报表", 2052);            this.ReportProperty.DetailReportId = "PXJT_MFG
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值