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月同比結果正確,問題得到解決。

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM