电脑桌面
添加蚂蚁七词文库到电脑桌面
安装后可以在桌面快捷访问

透视表简单示例教程

来源:金蝶云社区作者:金蝶2024-09-235

透视表简单示例教程

        本文将示例一个透视表从新建到编写插件,演示一个简单的过滤过程。本示例适用于SQL Server账套。

首先打开BOS IDE,点击新建,新建一个透视表,如下图所示:

newpivot.PNG

点击确定后,需要修改一下默认透视表样式。在左侧工具栏的拖一个分割容器,再放一个日期作为查询条件。修改后的透视表如下:

donepivot.PNG


新建一个过滤页面,新建过程选择“继承”,依次选择节点BOS-应用框架-动态表单,选择到公共过滤,示例如下:

newfilter.PNG

确定后,生成一个过滤页面,在快捷页签下拖放一个日期控件作为查询条件,设置完成后如下:

donefilter.PNG

将透视表的“过滤窗口业务对象(报表)”设置为你的过滤页面的标识,本示例中填写PAEZ_PivotFilterDemo;

setting.PNG

接下来我们需要编写透视表数据源插件并注册,打开visual studio,编写透视表插件。同简单账表类似,新建类,继承自SysReportBaseService类,与简单账表不同的是,透视表需要对行、列以及数据进行设置。

this.SettingInfo.RowTitleFields.Add(settingBillNo);

this.SettingInfo.SelectedFields.Add(settingBillNo);

this.SettingInfo.ColTitleFields.Add(settingMaterial);

 this.SettingInfo.SelectedFields.Add(settingMaterial);

this.SettingInfo.AggregateFields.Add(settingAmount);

this.SettingInfo.SelectedFields.Add(settingAmount);

具体插件代码如下:


using Kingdee.BOS;

using Kingdee.BOS.App.Data;

using Kingdee.BOS.Contracts.Report;

using Kingdee.BOS.Core.Metadata.FieldElement;

using Kingdee.BOS.Core.Metadata.GroupElement;

using Kingdee.BOS.Core.Report;

using Kingdee.BOS.Core.Report.PivotReport;

using Kingdee.BOS.Orm.DataEntity;

using System;

using System.ComponentModel;

using System.Data;


namespace GalaxyPlugin.Pivot

{

    [Description("透视表插件")]

    public class CrossReportPlugin : SysReportBaseService

    {


        public override void Initialize()

        {

            this.ReportProperty.IsGroupSummary = true;

            this.ReportProperty.BillKeyFieldName = "FIDENTITYID";

            this.ReportProperty.ReportName = new Kingdee.BOS.LocaleValue("透视表插件演示");

            base.Initialize();            

        }


        public override ReportTitles GetReportTitles(IRptParams filter)

        {

            var result = base.GetReportTitles(filter);

            DynamicObject dyFilter = filter.FilterParameter.CustomFilter;

            if (dyFilter != null)

            {

                if(result==null)

                {

                    result = new ReportTitles();

                }

                //设置报表title

                result.AddTitle("F_PAEZ_Date", Convert.ToString(dyFilter["F_PAEZ_Date"]));

            }

            return result;

        }




        public override void BuilderReportSqlAndTempTable(IRptParams filter, string tableName)

        {

            string strCreateTable = string.Format(@"

                /*dialect*/SELECT TM.FID,TM.FBILLNO,TM.FCREATORID,TM.FCREATEDATE,TF.FALLAMOUNT,ml.FNAME as FMaterialName,TE.FENTRYID as FIDENTITYID INTO {0}

                FROM T_PUR_POORDER TM 

                INNER JOIN T_PUR_POORDERENTRY_F TF ON TM.FID = TF.FID

                INNER JOIN T_PUR_POORDERENTRY TE ON TM.FID = TE.FID

                inner join T_BD_MATERIAL m on te.FMATERIALID = m.FMATERIALID

                inner join T_BD_MATERIAL_L ml on m.FMATERIALID = ml.FMATERIALID

                WHERE 1=1 ", tableName);



            var custFilter = filter.FilterParameter.CustomFilter;


            if (custFilter != null && custFilter.DynamicObjectType.Properties.Contains("F_PAEZ_Date"))

            {

                var date = custFilter["F_PAEZ_Date"].ToString();

                if (!string.IsNullOrEmpty(date))

                {

                    string strDate = DateTime.Parse(date).ToString("yyyy-MM-dd");

                    strCreateTable += string.Format(" AND TM.FCREATEDATE >= '{0}'", strDate);

                }

            }


            //base.AfterCreateTempTabl

透视表简单示例教程

本文将示例一个透视表从新建到编写插件,演示一个简单的过滤过程。本示例适用于SQL Server账套。首先打开BOS IDE,点击新建,新...
点击下载文档文档为doc格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

已经是第一篇
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息
QQ群
  • 答案:my7c点击这里加入QQ群
支持邮箱
微信
  • 微信