cognos开发技巧总结文档 本文关键词:文档,技巧,开发,cognos
cognos开发技巧总结文档 本文简介:Cognos开发技巧总结文档1实现目录树展开功能1.1在列表中实现目录树展开功能1.插入一个列表,拖入5个字段,并且对运营商所在地分组2.添加运营商所在地的页眉3.拆分运营商所在地的单元格4.解锁,将运营商所在地的汇总拖到运营商处5.删除运营商所在地6.按住CTRL,分别拖动本周新增用户数、今年新增
cognos开发技巧总结文档 本文内容:
Cognos开发技巧总结文档
1
实现目录树展开功能
1.1在列表中实现目录树展开功能
1.插入一个列表,拖入5个字段,并且对运营商所在地分组
2.添加运营商所在地的页眉
3.拆分运营商所在地的单元格
4.解锁,将运营商所在地的汇总拖到运营商处
5.删除运营商所在地
6.
按住CTRL,分别拖动本周新增用户数、今年新增用户总数、期末用户总数到运营商所在地的页眉处
7.
在report
page中插入HTML控件,然后拷贝如下代码进去
下面代码主要是定义了两个函数,一个用于目录树的展开与缩进,另一个用于页面初始化时隐藏一些数据,下面代码只支持到2层目录,更详细的含义可参考的在交叉表中实现目录树功能的注释。
代码如下:
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“:
““;
el.src
=
“/cognos8/images/PropertyGroup_“+
(
el.src.indexOf(
“minus“)
==
-1
?
“minus“:
“plus“)
+
“.gif“;
for
(
var
i
=
tr.rowIndex
+
1;
i
-1)
{
trCurrent.style.display
=
“none“;
}
}
}
8.拖入一个HTML项目插入到运营商单元格前面,修改成数据项,并修改表达式
运营商中HTML控件代码如下:
+
[orc82].[D_OPERATIONROLES].[运营商所在地]
+
9.删除掉运营商所在地
10.设置运营商的填充为左侧20
11.增加图片
增加树形的图片PropertyGroup_plus.gif,空白图片blank.gif到cognos相应的图片目录
12.
增加列表页脚
(注意,这里的HTML控件一定要放入表页脚里面,否则不能实现隐藏数据的功能),并拷贝HTML代码,删除掉列表页脚几个字
代码如下:
13.选择列表,并设置列表每页行数为9999(这样就不用再翻页了)
14.这样一个树状报表就做好了,运行报表,查看结果
2
cognos
报表查询条件导出
以EXCEL2007,EXCEL2003,PDF格式导出报表时,一般输入的查询条件没有一起导出,希望将查询条件一起导出来。
在每个查询条件后面加入一个文本框
文本来源类型选报表表达式
表达式内容输入条件参数的名字
if
(ReportOutput()
HTML
)
then
ParamDisplayValue(
截止时间
)
3
创建模板的方法
1.在COGNOS中新建一个报表文件,其实就是普通的报表文件,然后对需要用到的模板格式进行编辑
例如下图:
2.编辑完后,选中文件菜单中的转换成模板项将普通文件转换为模板文件,最后保存该模板即可
3.应用这个模板
在COGNOS中新建一个报表文件,在弹出的新建对话框中如下图:
选择现有…
项,然后选择刚才创建的模板
4
类的应用
在COGNOS系统报表工具中,可以利用类对报表的格式进行统一调整,类似于CSS的功能。
1.下面举例,对下报表的列表进行格式化
如下图:
2.打开类编辑界面
查看-类,新建一个类,并设置了背景颜色和前景颜色,用于格式化列表中的单元格,如下图:
3.创建了类之后,然后在列表中应用该类
如下图:
4.在属性“类”中选择刚才创建的类。
列表中相应的单元格格式即可改变,如下图:
5.创建了一个类之后,还可以多次引用,可以方便地使格式保持统一
5
报表之间对象的互相引用
在一张报表中创建了一个控件后,可以在自身或其它报表中对它进行引用,引用方式有两种,一种是直接的关联引用,即被引用的控件的修改会影响到引用它的控件。另一种是复制引用,不会产生关联,只是复制副本。
1.在一张报表中选中要被引用的的控件,然后在属性栏中在“名称”项中输入一个唯一的标识名。
2.在要引用它的报表,比如另一张报表中需要用到这个控件,在打开另一张表后,在控件面板中将布局组件引用控件拖到要插入的地方,在弹出对话框中选择“其它报表”项,然后选择刚才建立被引用控件的报表,这时可看到“可引用控件”栏中会显示刚才创建的控件,选中即可。
3.点击控件,可以属性栏中的“嵌入”选项中选择引用的类型,即前面介绍的两种类型。
6
值提示的多项选择
创建一个值提示,选中值提示,这两处选择如图:过滤条件中使用in
7
交叉表表头文字改变
点中要修改文字的节点成员,添加数据项标签
在文本来源那里选择数据项标签
8.解决“列或交叉表的group行号、group子行号“1、先看如下效果(根据分组,显示group行号,和group的子项行号):
2、在列表里加入
【产品系列】【产品名称】【销售目标】,按【产品系列分组】。
向列表加入计算字段groupnumber,表达式为:running-count(distinct
[产品系列])-->组范围选择【产品系列】;
向列表加入计算字段sub_count,表达式为:running-count([产品名称]
for
[产品系列])
设置如下
:
于是就得到了想要的结果。
//修正一下图中的表达式错误,应该为:running-count([产品类型]
for
[产品系列])
按分组计算每一个分组的总记录数:
拖入一个数据项,表达式为count(sub_count),点开锁,拖入列表里的分组项同一列
如:
数据项
行号
表达式
running-count([上网账号]
for
[运营商名称])
数据项
总数
表达式
count([行号])
拖入列表,第二个运营商中拖入总数,选中将第二个运营商名称,可见那里选择否
9.日期提示默认值设置
日期提示默认前一天脚本
function
subtractDay
()
{
var
dtToday
=
new
Date();
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();
//getFormWarpRequest().onload=promptButtonFinish();
//getFormWarpRequest().onload=init();
开始日期和结束日期提示默认前一天脚本,要将开始日期name改为SDate1,结束日期name改为EDate1,在提示页面添加一个html,代码如下,也可以不加提示页面,直接拖入报表页面
function
subtractDay
()
{
var
dtToday
=
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
);
var
strYesterday
=
[dtYesterday.getUTCFullYear(),dtYesterday.getMonth()+1,dtYesterday.getDate()].join(“-“);
return
strYesterday;
}
function
init
()
{
pickerControlSDate1.setValue(
showMonthFirstDay());
pickerControlEDate1.setValue(
subtractDay());
promptButtonFinish();
}
//promptButtonFinish();
//getFormWarpRequest().onload=promptButtonFinish();
//getFormWarpRequest().onload=init();
10.让用户打开报表不能编辑
默认打开报表右上角有可编辑报表的按钮
在查询前拖入一个html代码如下,再打开报表右上角就为空了,看报表的用户无法编辑了
.mainHeader1{
display:
none;
}
.mainViewerHeader3{
display:
none;
}
11.将条件中的参数直接带入查询语句中
where
cdate
>=#prompt(
起始时间
)#
and
cdate
“报表属性”-->
“对于交互式HTML按数量容器分页”选择是“是”,修改默认值。
2、直到对当前列表、交叉表修改属性设置,数据属性:每页行数调整为:99999
方法二中的2点缺一不可,且配合方法一中的1,可以解决cognos10.1中的html页面分页问题。
13.列表创建多行表头
再点中列表页眉所在行
选择在上方或下方插入行
根据需要进行拆分和合并单元格
将要创建的表头文字拖入相应位置
按住ctrl,选中表头单元格
在左边的类中
选择列表标题单元格,点箭头加到右边,确定
运行报表,查看效果:这样表头修改成所要的格式
将原来的空的表头行选中,方框类型选择
无
14.空值填充
15.Cognos合并列单元格
在使用cognos的过程中,我们难免要制作中国式报表,http://blog.sina.com.cn/s/blog_6d357525010136xz.html(是我自己的一个博客)这个上面很好的说明了关于中国式报表表头的制作,图文的,看起来很方便,但是cognos不提供列的合并,而文中最后也没有说明怎么合并列。下面是我合并列的方法
合并之前:
选中一个单元格,比如上面那个单元格,然后找到它属性的边框属性
然后将样式设为无,并选中预览中的下面那个按钮:
注意两幅图片的差别,如此点击确定,然后选中横线下面那个单元格,按照上面的方法做,这次点击预览中的上横线按钮,这样就可以达到隐藏横线的效果了
效果如图:
这样就能够达到我们的目的了.
16.设置交叉表角单元格
交叉表角单元格本来只有一格,要设置多列标题时
点中角单元格,方框类型选无
可插入对象里拖入两个交叉表空间
将列内空列处方框类型设为无
解锁
拖入两个文本项目到刚插入的交叉表空间中
选中将类设为交叉表角单元格
设置交叉表多行表头时也可以参照拖入多个交叉表空间,再拖入文本项目至其中进行设置。
17.求有复合表达式项的合计、小计
如下报表,合计定期比前2月主机数量,
对应数量的表达式为:([本月主机数量]-[前2月主机数量])/[前2月主机数量]
第一层小计:
(total([本月主机数量]
for
[分公司],[归属服务站])-total([前2月主机数量]
for
[分公司],[归属服务站]))/total([前2月主机数量]
for
[分公司],[归属服务站])
第二层小计:
(total([本月主机数量]
for
[分公司])-total([前2月主机数量]
for
[分公司]))/total([前2月主机数量]
for
[分公司])
整表合计:
(total([本月主机数量]
for
report)-total([前2月主机数量]
for
report))/total([前2月主机数量]
for
report)
18.设置条件样式
如针对某列值设置,小于0,则用红色字
点中要设置的列,条件样式,点高级条件样式,新建条件
表达式定义里填写要设置满足的条件,确定
后面的样式点笔处,将前景颜色设为红色
这样报表出来的结果就会是刚设的列为负数是,则为红色字
19.自定义交叉表中某维度分别合计
如上图表,的值有主机、副机,
则主机、副机合计表达式分别为
total([QTYS]
within
set
filter
([TERMINALSPECIFICATIONNAME],[TERMINALSPECIFICATIONNAME]=
主机
))
total([QTYS]
within
set
filter
([TERMINALSPECIFICATIONNAME],[TERMINALSPECIFICATIONNAME]=
副机
))
20.把列表汇总从最后放到第一行
我把最后一行中的汇总放到第一行时,第一行的汇总显示不正确(显示的只是最第一条记录的值)
。如何把列表的汇总从最后一行,放到第一行,且显示正确的汇总数据?
选中表头,创建页眉,选择结构-创建页眉,(不是列表页眉),再然后选择分割列表单元格,然后选择新创建的页眉,解锁,
解锁后,把下面的汇总条,选中复制到新创建的页眉上,在把锁给锁上。
这是列表
如果是交叉表
直接拖上去就可以了
图的效果就是这样出来的啊,我问的是结果不一样啊,这个才是问题的关键。(第二个图)
因为你创建的是‘列表页眉’,不对,这样出来页眉一行显示的是‘列表页眉’
如你的一图。应该是‘创建页眉’,出来页眉一行显示的是‘汇总’,出来的数值结果才是汇总后的数值。
21.将登陆的用户名直接传到报表中
and
t.companyid
in(select
co.companylevel1id
from
csportal.TB_COGNOS_PORTAL_ORG_REL
tc
join
csportal.TB_SYS_EMPEE_ORG
eo
on
tc.org_id=eo.dept_id
join
(SELECT
e1.empee_id,e1.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
join
csbi.d_company_org
co
on
co.companyid=tc.dept_id
where
e.empee_acct=
#sq($account.personalInfo.userName)#
)
22.在报表中再引用值提示内容
拖入一个文本项目,内容随便写点什么,点中文本项目
将文本项目文件来源改为
表达式里拖入所需的参数
23.过滤一行中所有值都为0的
拖入一个数据项为每项相加
添加过滤条件0,应用程序处选择自动聚合之后。
24.查询条件的联动变化
如何实现两个值提示框的联动变化
例如:
现在一个维度有两层
两层的值分别为
第一层
第二层
A
a1,a2
B
b1,b2
现在拖两个值提示框
当第一个值提示框选择A时,第二个值提示框只出现a1和a2
当选择B时,第二个值提示框只出现b1和b2
选择第二个框的属性,将其属性中层叠来源点开,然后在弹出的框里选择第一个框的参数,然后将第一个框的属性设置为自动提交
前提是A和B必须是在同一张表里面有对应的关系
25.导出成excel和
1、如图新建两个HTML标签
下载
(18.51
KB)
2009-11-23
11:37
2、分别写入代码
function
getObjectName()
{
return
“oCV“+
document.
getElementById(“cv.id“).value;
}
function
expExcel()
{
var
objName
=
getObjectName();
eval(objName
+
“.getRV().viewReport(/
XLWA/
);“);
}
function
getObjectName()
{
return
“oCV“+
document.
getElementById(“cv.id“).value;
}
function
expExcel()
{
var
objName
=
getObjectName();
eval(objName
+
“.getRV().viewReport(/
spreadsheetML/
);“);
}
function
getObjectName()
{
return
“oCV“+
document.
getElementById(“cv.id“).value;
}
function
expPDF()
{
var
objName
=
getObjectName();
eval(objName
+
“.getRV().viewReport(/
PDF/
);“);
}
3、这样就OK了,下面提供两个按钮图片
导出成excel2007
function
getObjectName()
{
return
“oCV“+
document.
getElementById(“cv.id“).value;
}
function
expExcel()
{
var
objName
=
getObjectName();
eval(objName
+
“.getRV().viewReport(/
spreadsheetML/
);“);
}
26.导出的excel打开总有格式不一致提示
报表导出成excel打开的时候会提示“您尝试打开的文件**.xls的格式与文件扩展名指定的格式不一致”这是Excel的安全问题,
暂时解决办法如下,取消Excel的安全检测。
1、开始
->
运行
->
输入regedit
->
确定
2、找到注册表子项
HKEY_CURRENT_USER/Software/Microsoft/Office/12.0/Excel/Security
3、在右侧空白处点击鼠标右键,选择“新建
->
DWORD值(D)”,输入“ExtensionHardening“点击确定。
4、用鼠标右键点击ExtensionHardening,然后单击“修改(M)”,在数值数据中填写“0“即可确定。
5、关闭注册表编辑器,再次打开xls文件看看是不是提示是不是不见了?
拓展:ExtensionHardening设置的值的数据设置:
0:不检查文件扩展名和文件类型并绕过该函数的警告消息。
1:检查文件扩展名和文件类型。如果它们不匹配会显示警告消息。
2:检查文件扩展名和文件类型。如果它们不匹配不要打开该文件。
篇2:《鼓号队活动总结》
《鼓号队活动总结》word版 本文关键词:鼓号,活动总结,word
《鼓号队活动总结》word版 本文简介:2013下学年鼓号队兴趣小组活动总结上街中心小学阮晓君金婧陈芬华在学校的正确领导和指导下,经过本学期的训练,基本完成了新老队员的交替工作,六年级号手和鼓手将渐渐由四至五年级新队员代替,鼓号队指挥由五年级学生代替,总之,新的鼓号队已渐渐有了个雏形。现将工作得失总结如下:一、激发学生的荣誉感,增强学生的
《鼓号队活动总结》word版 本文内容:
2013下学年鼓号队兴趣小组活动总结
上街中心小学
阮晓君
金婧
陈芬华
在学校的正确领导和指导下,经过本学期的训练,基本完成了新老队员的交替工作,六年级号手和鼓手将渐渐由四至五年级新队员代替,鼓号队指挥由五年级学生代替,总之,新的鼓号队已渐渐有了个雏形。现将工作得失总结如下:
一、激发学生的荣誉感,增强学生的训练兴趣。根据鼓号队的特殊性,在升旗仪式等大型活动过程中演奏,适时表扬以激发学生的荣誉感,增强学生的训练兴趣,为提高训练效率起到极大的作用。
二、分层教学,突破难点。
1、号手的训练。整个鼓号队中最难训练的乐器就是小号,它既要求气流,还对口型有着严格的要求,尤其是高音的吹奏,是所有学员的难点。由于传授吹奏方法是学生带学生,更给训练带来了难度。所以,我将号手的训练分成音阶训练、曲子的训练两步,并对学员的训练效果进行及时的评价,以激励学生尽快掌握吹奏技巧。
2、大鼓鼓手、小鼓鼓手、紁手、指挥的训练。这几种乐器的演奏相对简单,只用一个星期就可以学会,长时间的演奏会使学员产生厌倦心理,故此,我将这部分学生的训练集中在一周中进行。
三、严明纪律,提高训练效率。过去的鼓号队养成非常自由的习惯,所以,我将严明纪律作为提高训练效率保障。对学生的不良行为及时纠正,是学员养成遵守纪律的好习惯。
四、用人格魅力来感召学生,让其喜欢鼓号队这个集体。在与学员相处中,我总是适时给队员创造幽默轻松的气氛,让其喜欢这个集体。
五、不足:
由于学员班级跨度较大,训练时间相对有限,学员参差不齐,训练效果还有待加强。
解决策略:将大鼓鼓手、小鼓鼓手、紁手、指挥学员锁定在一个年级,参与期限设定为两学期,在其有了厌倦情绪的时候,就进行新老队员的替换,既可以缩小学员的来源,又可使其学习兴趣得到很好的保持。
上街中心小学鼓号队
2013-6-20
篇3:一年级上册数学教学工作总结
一年级上册数学教学工作总结 本文关键词:上册,工作总结,数学教学
一年级上册数学教学工作总结 本文简介:一年级上册数学教学工作总结中渡小学张慈存本学期我担任一年级班的数学教学,作为一名数学教师,深刻感受到学生的认知差异,行为差异。很长时间从教低年级,因此,我对一年级并不陌生,不过,仍然不能有丝毫倦怠,认真学习,深入研究教法。立足现在,放眼未来,为使今后的工作开展更加顺利,现对本学期教学工作作出总结如下
一年级上册数学教学工作总结 本文内容:
一年级上册数学教学工作总结
中渡小学
张慈存
本学期我担任一年级班的数学教学,作为一名数学教师,深刻感受到学生的认知差异,行为差异。很长时间从教低年级,因此,我对一年级并不陌生,不过,仍然不能有丝毫倦怠,认真学习,深入研究教法。立足现在,放眼未来,为使今后的工作开展更加顺利,现对本学期教学工作作出总结如下:
一、备好课
本册内容有:数一数,比一比,10以内的认识和加减,认识图形,分类,11~20各数的认识,认识钟表,20以内的进位加法,用数学,数学实践活动。重点是10以内的认识和加减和20以内的进位加法。教学用书上说“一位数的加法和相应的减法是小学数学中最基础的内容,是学生终身学习与发展必备的基础知识和基本技能,必须让学生切实掌握。”
认真备课,不但备学生而且备教材备教法,根据教材内容及学生的实际,设计课的类型,拟定采用的教学方法,并对教学过程的程序及时间安排都作了详细的记录,认真写好教案。每一课都做到“有备而来”,每堂课都在课前做好充分的准备,并制作各种利于吸引学生注意力的有趣教具,课后及时对该课作出总结,写好教学后记。
二、增强课堂教学的趣味性,提高教学质量
在课堂上特别注意调动学生的积极性,加强师生交流,充分体现学生的主作用,让学生学得容易,学得轻松,学得愉快;注意精讲精练,在课堂上老师讲得尽量少,学生动口动手动脑尽量多;同时在每一堂课上都充分考虑每一个层次的学生学习需求和学习能力,让各个层次的学生都得到提高。要提高教学质量,还要做好课后辅导工作,小学生爱动、好玩,缺乏自控能力,常在学习上不能按时完成作业,有的学生抄袭作业。针对这种问题,抓好学生的思想教育,并使这一工作贯彻到对学生的学习指导中去,还要做好对学生学习的辅导和帮助工作,尤其在后进生的转化上,对后进生努力做到从友善开始,比如,握握他的手,摸摸他的头,或帮助整理衣服。从赞美着手,所有的人都渴望得到别人的理解和尊重,所以,和差生交谈时,对他的处境、想法表示深刻的理解和尊重。
三、
做好课后辅导工作
在课后,为不同层次的学生进行相应的辅导,以满足不同层次的学生的需求,避免了一刀切的弊端,同时加大了后进生的辅导力度。对后进生的辅导,并不限于学习知识性的辅导,更重要的是学习思想的辅导,要提高后进生的成绩,首先要解决他们心结,让他们意识到学习的重要性和必要性,使之对学习萌发兴趣。要通过各种途径激发他们的求知欲和上进心,让他们意识到学习并不是一项任务,也不是一件痛苦的事情。而是充满乐趣的。从而自觉的把身心投放到学习中去。这样,后进生的转化,就由原来的简单粗暴、强制学习转化到自觉的求知上来。使学习成为他们自我意识力度一部分。在此基础上,再教给他们学习的方法,提高他们的技能。并认真细致地做好查漏补缺工作。后进生通常存在很多知识断层,这些都是后进生转化过程中的拌脚石,在做好后进生的转化工作时,要特别注意给他们补课,把他们以前学习的知识断层补充完整,这样,他们就会学得轻松,进步也快,兴趣和求知欲也会随之增加。
四、博采众长,提高教学水平
欲给学生一滴水,老师先要有一桶水,尤其是在当今知识更新非常迅速的年代,为更好地适应教学工作。我明白:今天的学习就是为了明天的工作,教师自身素质的提高就是为了更好地干好教育工作。教到老,学到老,才会永远站在教育领域的前端。多学习别人的优点,克服自己的不足,改进工作。
五、一份耕耘,一份收获
经过一个学期的努力,期末考就是一种考验。无论成绩高低,都体现了我在这学期的教学成果。我明白到这并不是最重要的,重要的是在本学期后如何自我提高,如何共同提高学生的数学水平。因此,无论怎样辛苦,我都会继续努力,多问,多想,多向学校的老师学习,争取进步。教学工作苦乐相伴。我们将本着“勤学、善思、实干”的准则,一如既往,再接再厉,把工作开展得更好。
2011.12