zoukankan      html  css  js  c++  java
  • cognos report同比环比以及默认为当前月分析

    现在的需求是按月份分析不同时期的余额数据,.(报表工具:cognos report;建模工具:FM)

    -------------------------------------------------------------------------------------------------------------------------------

    实现效果:用户第一次点击报表,当前月余额,上一个月余额,去年这个月的余额。

    技术点:同比环比,值提示设置默认值

    step1:创建提示页面,给值提示设置默认值,自动提交表单,界面如下

    html项目都是为了写JS

    前面html处代码为 <div style="display:none">,这里不过多描述,就是为了不显示提示页面。

    后面html处代码为

    <script>
    function getcurrentmonth()
    {
    var dtToday = new Date();
    var nowyear=dtToday.getUTCFullYear();
    var nowmonth1=dtToday.getMonth()+1;
    var nowquarter="";
    var nowmonth="";

    if(nowmonth1>0&&nowmonth1<4)
    {
    nowquarter="Q1]";
    }
    if(nowmonth1>3&&nowmonth1<7)
    {
    nowquarter="Q2]";
    }
    if(nowmonth1>6&&nowmonth1<10)
    {
    nowquarter="Q3]";
    }
    if(nowmonth1>9&&nowmonth1<13)
    {
    nowquarter="Q4]";
    }

    if(nowmonth1>0&&nowmonth1<10)
    {
    nowmonth=["0",nowmonth1].join("");
    }
    else
    {
    nowmonth=nowmonth1;
    }

    var str1="[Presentation Layer].[报表月份].[报表月份].[月]->[all].[";
    var str2= [nowyear,"]"].join("");
    var str11= [str1,str2].join("");
    var str4= ["[",nowyear].join("");
    var str22= [str4,nowquarter].join("");

    var str5= ["[",nowyear].join("");
    var str6= [nowmonth,"]"].join("");
    var str33=[str5,str6].join("");

    str7= [str11,"."].join("");
    str8= [str7,str22].join("");
    str9= [str8,"."].join("");
    str10= [str9,str33].join("");
    return str10;
    }
    function init()
    {
    var form=getFormWarpRequest();
    var mylist1= form._oLstChoicesdefaultmonth;//粗体部分为提示页面中值提示的名称,而不是参数名称。
    for(var i=0;i<mylist1.length;i++)
    {
    if(mylist1[i].value==getcurrentmonth())
    {
    mylist1[i].selected="true";
    }
    }
    promptButtonFinish();
    }
    </script>

    <body onload=" init()">
    </body>

    </div>

    解释:在getcurrentmonth方法中得到当前日期,获取当前年,当前月份,然后做了一系列字符串处理,目的是为了得到这样的值并且返回。

    在数据库中,月份的值为201201,2012年1月这样的但是这里为什么要这样呢?这个时候就要看同比环比时候的表达式了。

    当前月为基础对象,根据当前月延伸至上一个月,去年同月(当然也可以做当前日,当前季度,当前周,当前年的一系列分析)

    当前月:

    [Presentation Layer].[报表月份].[报表月份].[月]-> ?defaultmonth?

    参数 ?defaultmonth?来自值提示

    [Presentation Layer].[报表月份].[报表月份].[月]这个层级是来自

    而不是月份code是number类型的对象,此处是memberUniqueName对象,数据格式为

    [Presentation Layer].[报表月份].[报表月份].[月]->[all].[年].[年季度].[年月],所以上面的方法中做了一系列的字符串处理

    目的就是利用当前日期得到符合当前月份的“【月】”的memberUniqueName值。

    OK 在for循环里面遍历select,当值相等时默认selected.

    需要注意的是当前月中的参数名称

    [Presentation Layer].[报表月份].[报表月份].[月]-> ?defaultmonth?要和值提示的参数名称保持一致。每次选择的时候传递给当前月。

    step2:创建报表页面

        注意页面中的值提示参数名和提示页面保持一致。

        step3:运行

        效果1

       

          效果2

         

             效果3:

            

                总结:看效果1与效果2得到2013年7月和2013年6月环比结果正确,看效果1与效果3得到2013年7月和2012年7月同比结果正确,问题得到解决。

  • 相关阅读:
    一用就会的数据库
    MQ介绍
    SpringBoot之HandlerInterceptorAdapter
    Swagger2异常 java.lang.NumberFormatException: For input string: ""
    Could not get a resource from the pool
    spring boot 之监听器ApplicationListener
    Nexus的使用
    CentOS7 搭建maven私服Nexus
    centos7安装部署gitlab服务器
    centos7安装nginx
  • 原文地址:https://www.cnblogs.com/wxjnew/p/3410333.html
Copyright © 2011-2022 走看看