【高级报表制作技巧】Cognos日期时间控件使用探索

正在加载中...

试读已结束

继续阅读请 1 金币购买后下载

立即下载

资料简介:

【报表图形使用及特殊效果的实现】第二讲

——Cognos日期时间控件使用探索


【引言】


本讲,将从日期时间控件的类型;日期、时间控件样式类型(原始日历样式、编辑框样式、编辑框多选样式、列表框选择范围样式、其他常用选项);用JS设置日期提示DatePrompt的默认值;日期提示 自动提交js实现;常用日期处理说明;Cognos 用js修改日期提示,六节内容为大家讲解Cognos 日期时间控件的使用方法。


【正文】


1.日期时间控件的类型


图片1.jpg


Cognos有四种日期及时间控件:
日期和时间提示:用于同时选择日期及时间;

日期提示:只选择日期;

时间提示:只选择时间;

间隔时间提示:用于选择一段时间差;



2.日期、时间控件样式类型


1)原始日历样式:

设计图

运行图


2)编辑框样式

设计图

运行图



3)编辑框多选样式

设计图

运行图


4)列表框选择范围样式

162vioiostat.JPG


设计图

运行图


5)其他常用选项

必需:是否必选项;
第一个日期、最后一个日期:用于确定可以用于选择的日期范围;
显示秒:选择时间是否可以选择秒,选择否选择时间时只能选择小时、分钟;
显示毫秒:选择时间是否可以选择毫秒;
时钟模式:选择“动态”时,日期时间按照现实时间不短刷新;
默认选项:给选择框一个固定的默认选项。

备注:四种日期、时间控件的样式类型基本相同,可以根据业务需要混合配置使用。


3.用JS设置日期提示DatePrompt的默认值


1)在提示页面加入 DatePrompt 组件,属性-->名称:PDate

2)然后拖入HTML,加入JS代码


3)运行效果如下: 当前日期2010-07-19



4.日期提示 自动提交js实现


HTMLITEM里的代码




5.常用日期处理说明


1)年份:
substr([流程信息].[内控实例节点状态信息_视图].[流程实例开始时间] ,1,4 )
注释!!
Cognos默认的日期格式2011-11-23,上述命令意为从第一位开始取值,共取四位,得到2011年

2)月份:
to_char(to_number(substr([流程信息].[内控实例节点状态信息_视图].[流程实例开始时间] ,6,2)))
04(字符)——>4(数字)——>4(字符)

3)下月:
if(to_number(substr([流程信息].[内控实例节点状态信息_视图].[流程实例开始时间] ,6,2))=12)
then('1')
else(to_char(to_number(substr([流程信息].[内控实例节点状态信息_视图].[流程实例开始时间] ,6,2))+1))
解决显示上月情况的问题。

4)下月年:
if(to_number(substr([流程信息].[内控实例节点状态信息_视图].[流程实例开始时间] ,6,2))=12)
then(to_char(to_number([流程信息].[内控实例节点状态信息_视图].[年份])+1))
else([流程信息].[内控实例节点状态信息_视图].[年份]  )
解决了1月的上月是前一年12月的问题。

5)substr、instr嵌套:
substr(sheetid,instr(sheetid,'-',1,1)+1,length(sheetid)-1) from idp_kh.流程执行情况

6)cognos时间控件截取时间日月:例如:2012-02-12   -》2012年2月。。。
CASE
WHEN (nullif (substring(ParamDisplayValue('P_SDATE'),7,1),'-') is null)
THEN
(substring(ParamDisplayValue('P_SDATE'),1,4)+'年'+substring(ParamDisplayValue('P_SDATE'),6,1)+'月客户初回遵守率指标值')
ELSE
(substring(ParamDisplayValue('P_SDATE'),1,4)+'年'+substring(ParamDisplayValue('P_SDATE'),6,2)+'月客户初回遵守率指标值' )
END
--------------------------------------------------
CASE
WHEN (ParamDisplayValue('P_SDATE')='1900-01-01')
THEN
(substring (date2string (Today ()),1,7)+'月客户初回遵守率指标值')
ELSE
(
CASE
WHEN (nullif (substring(ParamDisplayValue('P_SDATE'),7,1),'-') is null)
THEN
(substring(ParamDisplayValue('P_SDATE'),1,4)+'年'+substring(ParamDisplayValue('P_SDATE'),6,1)+'月客户初回遵守率指标值')
ELSE
(substring(ParamDisplayValue('P_SDATE'),1,4)+'年'+substring(ParamDisplayValue('P_SDATE'),6,2)+'月客户初回遵守率指标值' )
END
)
END


7)cognos日期控件获取系统日期:即将日期控件显示为当前系统时间

-----------------------------------------------------------------------------------------
8)默认系统时间 过滤器
IF ( ?P_SDATE? <> '1900-01-01' ) THEN
( [生产状况].[日期维表].[统计日期] = ?P_SDATE?)
ELSE
( [生产状况].[日期维表].[统计日期]
        = to_char(sysdate(),'YYYY-MM-DD'))

9)
(?P_SDATE?<>'1900-01-01' and [MO纳期遵守率].[日期维表].[统计日期]=cast(?P_SDATE?,date))
or
(?P_SDATE?='1900-01-01' and [MO纳期遵守率].[日期维表].[统计日期]=cast(sysdate()-1,date))

10)
报表表达式的例子:
substring(ParamValue ('P_SDATE'),1,10)+' 4J纳期延误件数明细表'

11)
case when
(ParamDisplayValue('P_SDATE')='1900-01-01')
then
(substring(timestamp2string (_add_days (date2timestamp (Today ()),-1)),1,10))
else
(substring (ParamDisplayValue('P_SDATE'),1,10))
end
-----------------------------------------------------------------------------------------
(?P_SDATE?<>'1900-01-01' and  [MO纳期遵守率].[日期维表].[月]=extract (month,?P_SDATE?))
or ( ?P_SDATE?='1900-01-01' and  [MO纳期遵守率].[日期维表].[月]=to_char(sysdate(),'MM'))

ParamDisplayValue('参数1')
CASE
WHEN (nullif (substring(?参数1?,7,1),'-') is null)
THEN
([业务视图].[时间].[年月键]=substring(?参数1?,1,4)+substring(?参数1?,6,1))
else
([业务视图].[时间].[年月键]='201201')
End

substring(ParamDisplayValue('参数1'),1,4)+'0'+substring(ParamDisplayValue('参数1'),6,1)

if(([业务视图].[指标].[本期工业产量]-[业务视图].[指标].[同期工业产量])>0)then
([业务视图].[指标].[本期工业产量]/50000-[业务视图].[指标].[同期工业产量]/50000)
else
(abs([业务视图].[指标].[本期工业产量]/50000-[业务视图].[指标].[同期工业产量]/50000))


if (?YM?='') then
([应用层].[时间].[年月]=substring(current_date,1,4)+substring(current_date,6,2))
else
([应用层].[时间].[年月]=?YM?)

文本表达式:
substring(date2string (Today ()),1,4)

查询
[应用层].[时间].[年月]=to_char(current_date,'YYYYMM')


默认值法:

if(?YM?='200001')then
([应用层].[时间].[年月]=to_char(current_date,'YYYYMM'))
else
([应用层].[时间].[年月]=?YM?)



6.Cognos 用js修改日期提示


 


把DatePrompt 的Miscellaneous  名字改为PDat


report studio 值提示

1)提示框默认项的显示名称的修改:

用三个html,前两个放在你的提示框(值提示)的两边。
第一个的内容是:
第二个是

这两个共同起作用,将提示框的ID赋值为TSKid。
第三个放在下面随便一个地方就行,用于将提示框的默认名称修改为指定值,代码是:


本文章提供下载:

2013-12-09
页数12
浏览27108
下载242

已下载用户的评价8.00分

您还未下载该资料,不能发表评价;
查看我的 待评价资源
Jason_WangJason_Wang软件开发工程师www2017-10-26
有用
有帮助,赞~
vince_huvince_hu软件开发工程师北京中亦安图科技股份有限公司2017-08-22
有用
11111111111
132twt132twt研发工程师北京2017-04-17
有用
还是很有帮助的
SpringSpring商业智能工程师广发银行2016-05-12
没用
不知道能否实现互联网那种灵活的日期控件
冥王星qw冥王星qw软件开发工程师git2016-04-28
没用
[b]回复 [url=http://www.cognoschina.net/club/redirect.php?goto=findpost&pid=400879&ptid=62607]1#[/url] [i]qinxinxu[/i] [/b] 感谢楼主分享,新手学习中
yyiconyyicon软件开发工程师保密2016-04-27
没用
看看,谢谢
木子木子软件开发工程师2016-04-11
没用
怎么下载不了
伍猫子伍猫子软件开发工程师保密2016-04-08
没用
为了更好地为您提供服务,请您在回复中告诉我们“针对该主题,您目前存在的困难,或者您还想了解的内容”,即可浏览/下载
colinleejcolinleej其它jyyr2016-03-31
没用
唉,感觉自己什么都做不出来
joannakingjoannakingIT顾问NA2016-03-16
没用
[b]回复 [url=http://www.cognoschina.net/club/redirect.php?goto=findpost&pid=400917&ptid=62607]2#[/url] [i]白帝舞剑行[/i] [/b] thank you

贡献者

qinxinxu软件架构设计师,中软国际(昆明)
cognoser
X社区推广