【高级报表制作技巧】Cognos日期时间控件使用探索
正在加载中...
【报表图形使用及特殊效果的实现】第二讲
——Cognos日期时间控件使用探索
【引言】
本讲,将从日期时间控件的类型;日期、时间控件样式类型(原始日历样式、编辑框样式、编辑框多选样式、列表框选择范围样式、其他常用选项);用JS设置日期提示DatePrompt的默认值;日期提示 自动提交js实现;常用日期处理说明;Cognos 用js修改日期提示,六节内容为大家讲解Cognos 日期时间控件的使用方法。
【正文】
1.日期时间控件的类型
Cognos有四种日期及时间控件:
日期和时间提示:用于同时选择日期及时间;
日期提示:只选择日期;
时间提示:只选择时间;
间隔时间提示:用于选择一段时间差;
2.日期、时间控件样式类型
1)原始日历样式:
设计图
运行图
2)编辑框样式
设计图
运行图
3)编辑框多选样式
设计图
运行图
4)列表框选择范围样式
设计图
运行图
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。
第三个放在下面随便一个地方就行,用于将提示框的默认名称修改为指定值,代码是:
本文章提供下载:
已下载用户的评价8.00分
查看我的 待评价资源
[b]回复 [url=http://www.cognoschina.net/club/redirect.php?goto=findpost&pid=400879&ptid=62607]1#[/url] [i]qinxinxu[/i] [/b] 感谢楼主分享,新手学习中
[b]回复 [url=http://www.cognoschina.net/club/redirect.php?goto=findpost&pid=400917&ptid=62607]2#[/url] [i]白帝舞剑行[/i] [/b] thank you