cognos开发技巧总结文档_第1页
cognos开发技巧总结文档_第2页
cognos开发技巧总结文档_第3页
cognos开发技巧总结文档_第4页
cognos开发技巧总结文档_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Cognos开发技巧总结文档1 实现目录树展开功能1.1在列表中实现目录树展开功能1.插入一个列表,拖入5个字段,并且对运营商所在地分组2.添加运营商所在地的页眉3.拆分运营商所在地的单元格4.解锁,将运营商所在地的汇总拖到运营商处 5.删除运营商所在地6. 按住CTRL,分别拖动本周新增用户数、今年新增用户总数、期末用户总数到运营商所在地的页眉处7. 在report page中插入HTML控件,然后拷贝如下代码进去下面代码主要是定义了两个函数,一个用于目录树的展开与缩进,另一个用于页面初始化时隐藏一些数据,下面代码只支持到2层目录,更详细的含义可参考的在交叉表中实现目录树功能的注释。代码如下

2、:<script>function ExpandCollapse( el )var tr = el.parentElement.parentElement;var tbl = tr.parentElement.parentElement;var sDisplay = ( el.src.indexOf( "minus" ) = -1 ) ? "" : "none"var sDisplayReverse = ( el.src.indexOf( "minus" ) = -1 ) ? "none&qu

3、ot; : ""el.src = "/cognos8/images/PropertyGroup_" + ( el.src.indexOf( "minus" ) = -1 ? "minus" : "plus" ) + ".gif"for ( var i = tr.rowIndex + 1; i < tbl.rows.length; i+ )var trCurrent = tbl.rows( i );if(trCurrent.cells(0).firstChild&

4、& trCurrent.cells( 0 ).getElementsByTagName( "IMG" ).length )if ( tr.cells(0).style.paddingLeft ="" && trCurrent.cells(0).style.paddingLeft ="20px" )if (el.src.indexOf( "minus" ) = -1 )trCurrent.cells(0).getElementsByTagName("IMG").item(0

5、).src = "/cognos8/images/PropertyGroup_plus.gif"else break;else trCurrent.style.display = sDisplay;function StartHidden(el)var tbl=el.parentElement.parentElement.parentElement.parentElement;for (var i = 0; i < tbl.rows.length; i+)var trCurrent = tbl.rows(i);if (trCurrent.cells(0).style.

6、paddingLeft.indexOf("px") > -1)trCurrent.style.display = "none"</script>8.拖入一个HTML项目插入到运营商单元格前面,修改成数据项,并修改表达式运营商中HTML控件代码如下:'<img onclick=''ExpandCollapse(this)'' src=''/cognos8/images/PropertyGroup_plus.gif'' style=''cursor

7、:hand; vertical-align:middle; margin-right:2px''/><span onclick=''ExpandCollapse(this.previousSibling)'' style=''cursor:hand''>'+ orc82.D_OPERATIONROLES.运营商所在地 + '</span>'9.删除掉运营商所在地10.设置运营商的填充为左侧2011.增加图片增加树形的图片PropertyGroup_plus.gi

8、f,空白图片blank.gif到cognos相应的图片目录12. 增加列表页脚(注意,这里的HTML控件一定要放入表页脚里面,否则不能实现隐藏数据的功能),并拷贝HTML代码,删除掉列表页脚几个字代码如下:<img onload='StartHidden(this)' src='/cognos8/images/blank.gif'/>13.选择列表,并设置列表每页行数为9999(这样就不用再翻页了)14.这样一个树状报表就做好了,运行报表,查看结果2 cognos 报表查询条件导出以EXCEL2007,EXCEL2003,PDF格式导出报表时,一般输

9、入的查询条件没有一起导出,希望将查询条件一起导出来。在每个查询条件后面加入一个文本框文本来源类型选报表表达式表达式内容输入条件参数的名字if (ReportOutput() <> 'HTML') then ParamDisplayValue('截止时间')3 创建模板的方法1.在COGNOS中新建一个报表文件,其实就是普通的报表文件,然后对需要用到的模板格式进行编辑例如下图:2.编辑完后,选中文件菜单中的转换成模板项将普通文件转换为模板文件,最后保存该模板即可3.应用这个模板在COGNOS中新建一个报表文件,在弹出的新建对话框中如下图:选择现有 项,

10、然后选择刚才创建的模板4 类的应用在COGNOS系统报表工具中,可以利用类对报表的格式进行统一调整,类似于CSS的功能。1.下面举例,对下报表的列表进行格式化如下图:2.打开类编辑界面查看-类,新建一个类,并设置了背景颜色和前景颜色,用于格式化列表中的单元格,如下图:3.创建了类之后,然后在列表中应用该类如下图:4.在属性“类”中选择刚才创建的类。列表中相应的单元格格式即可改变,如下图:5.创建了一个类之后,还可以多次引用,可以方便地使格式保持统一5 报表之间对象的互相引用在一张报表中创建了一个控件后,可以在自身或其它报表中对它进行引用,引用方式有两种,一种是直接的关联引用,即被引用的控件的修

11、改会影响到引用它的控件。另一种是复制引用,不会产生关联,只是复制副本。1.在一张报表中选中要被引用的的控件,然后在属性栏中在“名称”项中输入一个唯一的标识名。2.在要引用它的报表,比如另一张报表中需要用到这个控件,在打开另一张表后,在控件面板中将布局组件引用控件拖到要插入的地方,在弹出对话框中选择“其它报表”项,然后选择刚才建立被引用控件的报表,这时可看到“可引用控件”栏中会显示刚才创建的控件,选中即可。3.点击控件,可以属性栏中的“嵌入”选项中选择引用的类型,即前面介绍的两种类型。6 值提示的多项选择创建一个值提示,选中值提示,这两处选择如图:过滤条件中使用in7 交叉表表头文字改变点中要修

12、改文字的节点成员,添加数据项标签在文本来源那里选择数据项标签8.解决"列或交叉表的group行号、group子行号"1、先看如下效果(根据分组,显示group行号,和group的子项行号):2、在列表里加入 【产品系列】【产品名称】【销售目标】,按【产品系列分组】。向列表加入计算字段groupnumber,表达式为:running-count(distinct 产品系列)->组范围选择【产品系列】;向列表加入计算字段sub_count,表达式为:running-count(产品名称 for 产品系列)设置如下:于是就得到了想要的结果。/修正一下图中的表达式错误,应该为

13、:running-count(产品类型 for 产品系列)按分组计算每一个分组的总记录数:拖入一个数据项,表达式为count(sub_count),点开锁,拖入列表里的分组项同一列如:数据项 行号 表达式 running-count(上网账号 for 运营商名称)数据项 总数 表达式 count(行号)拖入列表,第二个运营商中拖入总数,选中将第二个运营商名称,可见那里选择否9.日期提示默认值设置日期提示默认前一天脚本<script language="javascript">function subtractDay ()var dtToday = new Dat

14、e();var dtYesterday = new Date( dtToday - 86400000 );var strYesterday = dtYesterday.getUTCFullYear(), dtYesterday.getMonth()+1, dtYesterday.getDate().join("-");return strYesterday;function init ()pickerControlEDate1.setValue( subtractDay();promptButtonFinish(); /promptButtonFinish(); /getF

15、ormWarpRequest().onload=promptButtonFinish(); /getFormWarpRequest().onload=init(); </script> <body onload=init()>开始日期和结束日期提示默认前一天脚本,要将开始日期name改为SDate1,结束日期name改为EDate1,在提示页面添加一个html,代码如下,也可以不加提示页面,直接拖入报表页面<script language="javascript">function subtractDay ()var dtToday =

16、new Date();var dtYesterday = new Date( dtToday - 86400000 );var strYesterday = dtYesterday.getUTCFullYear(), dtYesterday.getMonth()+1, dtYesterday.getDate().join("-");return strYesterday;function showMonthFirstDay() var dtToday = new Date();var dtYesterday = new Date( dtToday - 86400000 );

17、var strYesterday = dtYesterday.getUTCFullYear(), dtYesterday.getMonth()+1, dtYesterday.getDate().join("-");return strYesterday; function init ()pickerControlSDate1.setValue( showMonthFirstDay();pickerControlEDate1.setValue( subtractDay();promptButtonFinish(); /promptButtonFinish(); /getFor

18、mWarpRequest().onload=promptButtonFinish(); /getFormWarpRequest().onload=init(); </script> <body onload=init()>10.让用户打开报表不能编辑默认打开报表右上角有可编辑报表的按钮在查询前拖入一个html代码如下,再打开报表右上角就为空了,看报表的用户无法编辑了<style> .mainHeader1 display: none; .mainViewerHeader3 display: none; </style>11.将条件中的参数直接带入

19、查询语句中where cdate >=#prompt('起始时间')# and cdate <=#prompt('截止时间')#12.实现报表不分页方法一: 1,报表列表中这张报表的“设置属性”-“报表”-“高级选项”-"HTML 报表中每个 Web 页面的行数: 默认是20, 改选值大点2,打开报表设计页面,在属性栏里选“页面”,找到“常规”,修改“分页”的值,选中“重复每一页”,其它不选,确定,就可以了此方法一中 1,在cognos8.4.1中测试可用,但在cognos10.1中不起作用选中列表所在表格,方法二:1、有时候还会出现分页显

20、示,再设置一下。设计界面选择“文件”-> “报表属性”-> “对于交互式HTML按数量容器分页”选择是“是”,修改默认值。2、直到对当前列表、交叉表修改属性设置,数据属性:每页行数调整为:99999方法二中的2点缺一不可,且配合方法一中的1,可以解决cognos10.1中的html页面分页问题。13.列表创建多行表头再点中列表页眉所在行选择在上方或下方插入行根据需要进行拆分和合并单元格将要创建的表头文字拖入相应位置按住ctrl,选中表头单元格在左边的类中选择列表标题单元格,点箭头加到右边,确定运行报表,查看效果:这样表头修改成所要的格式将原来的空的表头行选中,方框类型选择 无14.

21、空值填充15.Cognos合并列单元格在使用cognos的过程中,我们难免要制作中国式报表,合并之前:选中一个单元格,比如上面那个单元格,然后找到它属性的边框属性然后将样式设为无,并选中预览中的下面那个按钮:注意两幅图片的差别,如此点击确定,然后选中横线下面那个单元格,按照上面的方法做,这次点击预览中的上横线按钮,这样就可以达到隐藏横线的效果了.效果如图:这样就能够达到我们的目的了.16.设置交叉表角单元格交叉表角单元格本来只有一格,要设置多列标题时点中角单元格,方框类型选无可插入对象里拖入两个交叉表空间将列内空列处方框类型设为无解锁拖入两个文本项目到刚插入的交叉表空间中选中将类设为交叉表角单

22、元格设置交叉表多行表头时也可以参照拖入多个交叉表空间,再拖入文本项目至其中进行设置。17.求有复合表达式项的合计、小计如下报表,合计定期比前2月主机数量,对应数量的表达式为:(本月主机数量-前2月主机数量)/前2月主机数量第一层小计:(total(本月主机数量 for 分公司,归属服务站)-total(前2月主机数量 for 分公司,归属服务站)/total(前2月主机数量 for 分公司,归属服务站)第二层小计:(total(本月主机数量 for 分公司)-total(前2月主机数量 for 分公司)/total(前2月主机数量 for 分公司)整表合计:(total(本月主机数量 for

23、report)-total(前2月主机数量 for report)/total(前2月主机数量 for report)18.设置条件样式如针对某列值设置,小于0,则用红色字点中要设置的列,条件样式,点高级条件样式,新建条件表达式定义里填写要设置满足的条件,确定后面的样式点笔处,将前景颜色设为红色这样报表出来的结果就会是刚设的列为负数是,则为红色字19.自定义交叉表中某维度分别合计如上图表,的值有主机、副机,则主机、副机合计表达式分别为total(QTYS within set filter (TERMINALSPECIFICATIONNAME,TERMINALSPECIFICATIONNAME

24、='主机')total(QTYS within set filter (TERMINALSPECIFICATIONNAME,TERMINALSPECIFICATIONNAME='副机')20.把列表汇总从最后放到第一行我把最后一行中的汇总放到第一行时,第一行的汇总显示不正确(显示的只是最第一条记录的值)。如何把列表的汇总从最后一行,放到第一行,且显示正确的汇总数据?选中表头,创建页眉,选择结构-创建页眉,(不是列表页眉),再然后选择分割列表单元格,然后选择新创建的页眉,解锁,解锁后,把下面的汇总条,选中复制到新创建的页眉上,在把锁给锁上。这是列表 如果是交叉表

25、直接拖上去就可以了图的效果就是这样出来的啊,我问的是结果不一样啊,这个才是问题的关键。(第二个图)因为你创建的是列表页眉,不对,这样出来页眉一行显示的是列表页眉 如你的一图。应该是创建页眉,出来页眉一行显示的是汇总,出来的数值结果才是汇总后的数值。21.将登陆的用户名直接传到报表中and panyid in(select panylevel1id from csportal.TB_COGNOS_PORTAL_ORG_REL tcjoin csportal.TB_SYS_EMPEE_ORG eo on _id=eo.dept_idjoin (SELECT e1.empee_id,e1

26、.empee_acct from csportal.tb_pty_empee e1 where e1.empee_acct!='admin' union all SELECT 150500011166 empee_id,e2.empee_acct from csportal.tb_pty_empee e2 where e2.empee_acct='admin'union all SELECT 150500011166 empee_id,'huge' empee_acct from dual) e on e.empee_id=eo.empee_id

27、 join csbi.d_company_org co on panyid=tc.dept_idwhere e.empee_acct= #sq($account.personalInfo.userName)# )22.在报表中再引用值提示内容拖入一个文本项目,内容随便写点什么,点中文本项目将文本项目文件来源改为表达式里拖入所需的参数23.过滤一行中所有值都为0的拖入一个数据项为每项相加添加过滤条件<>0,应用程序处选择自动聚合之后。24.查询条件的联动变化如何实现两个值提示框的联动变化例如: 现在一个维度有两层 两层的值分别为 第一层 第二层 A a1,a2 B b1,b2 现在拖

28、两个值提示框 当第一个值提示框选择A时,第二个值提示框只出现a1和a2 当选择B时,第二个值提示框只出现b1和b2选择第二个框的属性,将其属性中层叠来源点开,然后在弹出的框里选择第一个框的参数,然后将第一个框的属性设置为自动提交前提是A和B必须是在同一张表里面有对应的关系25.导出成excel和 PDF1、如图新建两个HTML标签下载 (18.51 KB)2009-11-23 11:372、分别写入代码<script language="javascript">function getObjectName()return "oCV" + do

29、cument. getElementById("cv.id").value;function expExcel()var objName = getObjectName();eval(objName + ".getRV().viewReport('XLWA');");</script><img src="/cognos8/samples/images/导出excel.gif"><script language="javascript">function getOb

30、jectName() return "oCV" + document. getElementById("cv.id").value; function expExcel() var objName = getObjectName(); eval(objName + ".getRV().viewReport('spreadsheetML');"); </script><img src="/cognos8/images/导出excel2007.gif" onclick="expExcel();"/><script language="javascript">function getObjectName()return "oCV" + document. getElementById("cv.id").value;function expPDF()var objName = getObjectName();eval(objName + ".getRV().v

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论