Cognos报表—知识整理一、提示页自动加载1、功能需求背景华中电网概况报表首页需要有日期参数,但是每次进入首页时出现日期选择框影响美观,所以为其增加提示页面,但根据要求不能增加提示页面,所以设计出提示页面自动加载。通俗的讲就比如:出现提示页面,电脑自动点击确定进入主页面……2、功能实现方法步骤1:新建提示页面,新页面中内容包括:onload项目、完成按钮、日期提示框以及针对提示框的html项目。如下图1图1步骤2:Onload项目中函数:详见图1bodyonload=initMon()scriptlanguage=javascriptfunctioninitMon(){promptButtonFinish();}/script二、进入页面后自动刷新一次1、功能需求背景电网概况报表电厂容量分析主页面中,需要自动根据日期刷新一次页面(具体原因参见三、特殊的日期过滤)2、功能实现方法步骤1:Onload项目加载函数,如图2图2步骤2:Js中函数新加一行代码,如图3图33、可参考报表电网概况报表1.电厂容量分析三、特殊的日期过滤1、功能需求背景电网概况中发电情况包括水、火、风三种发电方式,在数据库中体现即为水(火、风)电机组管理(参数)表。根据用户要求,需要对全网水(火、风)当年新投机组容量等进行数据统计,2、设计思想1)将水、火、风机组管理表分别对应查询中取相同数据项,为U联做准备。2)在三个查询中新建“投运年”数据项,取得机组投运年份。表达式:substr(【投运日期】,1,4)3)将三个查询进行U联,给U联后的查询设置过滤条件,如图4图43、出现问题分析根据2、设计思想中进行操作,报表验证报错,不能对substr进行集操作,经查询得知,dm数据库不支持在两层(原层和U联层)查询中同时使用substr。4、新的解决方法思路如下图:步骤1:从日期提示框中取出“年份”。substring(ParamDisplayValue('结束日期'),1,4)步骤2:给取出的年份配html项目,以便读取……(见下图)步骤3:新增“文本框提示”,参数名为“年份”,为其配置html项目,以便读入年份及隐藏。(见下图)步骤4:读取数据,详见js截图步骤5:取得年份参数,为查询增加过滤条件……5、可参考报表电网概况报表1.电厂容量分析四、js控制的条件块跳转1、功能需求背景电网概况中,用户需要了解变电站的详细信息,但是通过列表的方式无法展示变电站所有信息,所以我们通过新增条件快,通过js触发条件块跳转,获得详细信息。2、需要组件1)点击对象对应的html项目:2)页面变量(比较固定)3)对应js代码3、功能实现思路点击“查看”,触发函数onclick=setInputValue(this);js中的对应函数起到触发条件块转变作用!4、注意事项Js控制的条件块跳转,要注意参数传递问题!例如,电网概况中,条件块跳转实现的都是根据概况信息跳转查看详细信息,以变电站为例,只想看到一个变电站的详细信息,所以传递参数必须保证唯一性!5、可参考报表电网概况报表5.电厂机组管理五、调度值班用日期1、功能描述根据选择的年月,判断该月有多少天和每天对应的星期,并将周末显示红色,效果图如下:2、功能实现方法1)制作界面如下2)js代码实现3、可参考报表六、鼠标移动,对应列表行变色1、功能效果图2、功能实现方法步骤一:增加html项目Html项目中js代码:步骤二:增加css标签Css标签中内容3、可参考报表任何已经完成的报表七、特色表头(滑动出现标签)1、功能需求背景福建调度安全分析报表迁移到华中,因为单张报表比较独立,报表之间没有关联,因此在每张报表中都添加了所有报表名称的标签,随之而来了一个问题,标签过多,严重影响美观……2、制作效果图3、功能实现方法3.1、制作界面3.2、实现思路通过div标签区分出不同级别的标题,通过js代码实现鼠标滑动到哪里,哪些标签隐藏,哪些显示的具体功能……3.3、实现功能代码3.3.1、css代码具体js代码:styletype=text/cssh4,div,ul,li,span{padding:0px;margin:0px}/*最外面DIV的样式*/#slidingBlock{over-flow:hidden;margin:0;height:60px;border:0;}#nav_box{width:458px;text-align:center;margin:0;}#slidingBlocka{color:#fff;cursor:hand;text-decoration:underline;}#slidingBlockh4{float:left;width:78px;line-height:27px;text-align:center;font-size:12px;over-flow:hidden;float:left;}#slidingBlockh4.menuNo{background-image:url(../samples/images/biaoqian2.jpg);background-repeat:no-repeat;}#slidingBlockh4.menuOn{background-position:0px;color:#fff;background-image:url(../samples/images/biaoqian1.jpg);background-repeat:no-repeat;}#line{width:5px;height:27px;float:left;}#slidingBlockDIV.slidingList_none{display:none}#slidingBlockDIV.slidingList{width:500px;margin-top:17px;clear:both;background-color:#009999;}#slidingBlockDIV.slidingListul{margin:0px;padding:0px;list-style:none;}#slidingBlockDIV.slidingListli{float:left;height:20px;line-height:20px;font-size:12px;text-indent:15px;}/style3.3.2、第一个div标签3.3.3、一级标题3.3.4、div-list1标签3.3.5、a标签3.4、更换亮色标签通过标签进入不同类型下的报表时,点击进入后要实现大类型的光亮,小标题显示黄色。下面举例说明:从【计划跟踪潮流裕度】跳转到【预防控制煤情分析】计划跟踪潮流裕度预防控制煤情分析界面跳转步骤1、更改div-liset1标签或者a标签更改前更改后更改前更改后步骤21、改变【潮流裕度】字体颜色2、增加【潮流裕度】追溯定义1、改变【煤情分析】字体颜色2、删除【煤情分析】追溯定义步骤3、改变一级标签,以实现背景图片的变换更改前更改前4、可参见报表调度安全分析报表八、鼠标移动到列表,箭头所指向相应的行变色。在onload后加javascriptcss代码如下:scriptvarx=document.getElementsByTagName(highlight);for(i=0;ix.length;i++){vartablerow=x[i].parentElement.parentElement;vartemp;if(i%2==0){tablerow.className=ji;}else{tablerow.className.replace(ji,);tablerow.className=ou;}tablerow.onmouseover=function(){temp=this.className;this.className=over;//this.className用来设置样式;鼠标悬停在上面的时候,over是样式内容,over接下面style/style里的内容(用来设置背景颜色和边框颜色)}tablerow.onmouseout=function(){this.className=this.className.replace(over,);//清空样式,把over后面的内容用空格代替this.className=temp;}}/scriptstyletr:hover,tr.over{background-color:ff6c00;color:ffffff;}//hover是鼠标滑过时的样式/style九、条件快跳转“背景图片”转换背景图片../samples/images/daohang02.bmp十、图片隐藏和显示显示:(出现隐藏图表提示)隐藏:(出现显示图表提示)点击位置1,位置3处的图标隐藏……设置:位置1:spanid='showText'onclick=showImg(this);style=cursor:hand;showText:标记位置idonclick:单击事件触发位置4中showing函数。style=”cursor:hand;”:鼠标移动到这里,变成手型。位置2:divid='showImage'style=display:位置4:functionshowImg(el){varimg=document.getElementById(showImage);vartxt=el;if(img.style.display==none){img.style.display=;txt.innerHTML=隐藏图表;}else{img.style.display=none;txt.innerHTML=显示图表;}//具体的显示图表和隐藏图表的执行函数。十一、挂流程图和表单spantitle='查看流程图及管理规定'onclick=showtree1(this);style=cursor:hand;Javascript中加函数functionshowtree1(el){vartd=el.parentElement;varflowid=td.getElementsByTagName(div)[0].innerText;vartdSpan=document.getElementById(FlowurlDiv);varipinfo=tdSpan.innerText;varurl=ipinfo+flowid;//alert(url);window.showModalDialog(url,,dialogWidth:1100px;dialogHeight:800px;dialogTop:100px;dialogLeft,100px);}底层IP:divid='FlowurlDiv'style=display:none底层IP:divid='FlowurlDiv1'style=display:none底层IP:divid='FlowurlDiv2'style=display:none十二、增加报表提示页面(1)双击“页面资源管理器”中的“提示页面”(2)进行1操作后出现如下界面:从左边“可插入对象”中将“页面”拖入中间位置的“提示页面”中即可。十三、图表主轴显示如(1月2月……)样式(从小到大排序)问题效果图:从数据项中取得数据为(0102……)样式,目的要取得下图样式,对此进行操作操作步骤:(1)外界面操作。属性:排序(已定义)类别(x轴)(2)查询资源管理器—相对查询—(排序、月份)相应过滤条件:月份:排序:(to_number([月份]))将月份转换成数字型,可消除数字前面的0.十四、字段设置问题效果图:操作图:工具栏中增加“字段设置”十五、提取当前月第一天问题代码:scripttype='text/javascript'functionsubtractDay(){vardtToday=newDa