如何开发一张贯穿整个销售生产发货的报表原创
金蝶云社区-龙大大大
龙大大大
7人赞赏了该文章 115次浏览 未经作者许可,禁止转载编辑于2024年08月08日 14:09:03
  1. 目前是接到一个需求,需要开发一张报表展示从销售订单到生产,工序,汇报,入库,出库的所有信息,而且报表需要点击在下方展示对应的明细信息

  2. 话不多说,先看成果,报表由3部分组成,上面为查询条件展示,中间为报表的主体,包含60多个列,下方为点开的详情列表


    8f77d817f4459c3a58ca9527df07f0f.png

  3. 开发步骤

    1. 画一个简单账表,分为上种下三部分,用分割容器分开

    2. 上面用于展示用户选择的查询条件,中间是一张贯穿整个业务的大表,下方放6个单据体,分别是对应的单据体

    3. 画一个过滤,添加对应的条件

      image.png

    4. 开始编码:将数据灌入临时表中


    5.  /// <summary>
              /// 向报表临时表,插入报表数据
              /// </summary>
              /// <param name="filter">过滤信息</param>
              /// <param name="tableName">临时表名</param>
              public override void BuilderReportSqlAndTempTable(IRptParams filter, string tableName)
              {
                  base.BuilderReportSqlAndTempTable(filter, tableName);
      
                  //小计行分组依据
                  //if (filter.FilterParameter.GroupbyString.Length > 0)
                  //{
                  //    this.ReportProperty.GroupSummaryInfoData.DynamicFilterGroupbyString = filter.FilterParameter.GroupbyString;
                  //}
      
                  //默认排序字段:需要从filter中取用户设置的排序字段
                  //KSQL_SEQ: ROW_NUMBER() OVER(ORDER BY  {0} ) FIDENTITYID
                  //排序字段
                  string sortStr = filter.FilterParameter.SortString;
                  KSQL_SEQ = string.Format(KSQL_SEQ, sortStr.IsNullOrEmptyOrWhiteSpace() ? " T0.jhbh asc" : sortStr);
                  //取值SQL
                  string sql = GetSql(filter);
                  sql = string.Format(@"/*dialect*/ SELECT T0.*,{0} INTO {1} FROM ({2})T0", KSQL_SEQ, tableName, sql);
      
                  DBUtils.Execute(Context, sql);
              }

        写一个表单插件用于点击报表时动态加载下面的明细

public class ZZSCDDAbstractSysReportPlugIn : AbstractSysReportPlugIn

        然后可以使用CellDbClick事件进行加载明细

 public override void CellDbClick(CellEventArgs Args)
        {
            base.CellDbClick(Args);
            
            //获取行FID   GetCurrentRowValue 
            //工序计划ID
            string gxjhid = ((ISysReportViewService)this.View).GetCurrentRowValue("id_jhid").ToString();
            BindGXMX(gxjhid);
            BindZYMX(gxjhid);
            string id_scmxid = ((ISysReportViewService)this.View).GetCurrentRowValue("id_scmxid").ToString();
            BindRKMX(id_scmxid);

            string lotid = ((ISysReportViewService)this.View).GetCurrentRowValue("id_lotid").ToString();
            string matid = ((ISysReportViewService)this.View).GetCurrentRowValue("id_matid").ToString();
            BindJSKC(lotid, matid);
            string SOEntryId = ((ISysReportViewService)this.View).GetCurrentRowValue("id_saleorderentryid").ToString();
            BindCKMX(lotid, matid, SOEntryId);

            BindFPMX(gxjhid);
        }

本示例只是给我们一个思路,如何开发一张大的报表并且在一个界面就能展示所有需要查看到的信息

赞 7