最简单的方法,就是在JSP中使用<iframe>标签,把url嵌进去。不需要装任何服务。
每一个报表都会有一个对应的URL。
可以在报表的属性中查询对应的URL:
Cognos10:
Cognos11:
介绍10:
10中,【URL】即是可以直接访问报表的URL路径,【标识】是该报表的唯一标识,可以看到,报表的URL是如下格式:
http://dispatcher_server:9300/bi/v1/disp?b_action=cognosViewer&run.outputFormat=HTML&run.prompt=true&ui.object=storeID (%22insert_StoreID_here%22)&ui.action=run&cv.header=false&cv.toolbar=false
整理如下:
http://dispatcher_server:9300/bi/v1/disp?
b_action=cognosViewer
&run.outputFormat=HTML
&run.prompt=true
&ui.object=storeID (%22insert_StoreID_here%22)
&ui.action=run
&cv.header=false
&cv.toolbar=false
由上可以知道,通过URL传参的方式,可以配置报表相关属性,也可以传入查询参数。
简单介绍下:
b_action=cognosViewer :要使用的cognos组件;
&ui.action=run :对对象操作:run--运行;new--新建;edit--编辑;
&ui.object=XXX :报表的具体位置
&ui.name=XXX :报表的名称
&run.outputFormat :输出格式,默认HTML
&run.prompt=false :是否运行提示页面
&cv.header=false :是否显示标题栏
&cv.toolbar=false :是否显示工具栏
&p_XXX=XX :传参
好的,开始修改URL。
1、dispatcher_server换成自己的服务器名称或者host_address;
2、insert_StoreID_here换成自己的报表标识;此部分可以不做,因为原URL就有,只是转码了;
3、以&的方式添加用户相关参数;
3.1 一般参数 &符号区分每一个参数,原始的参数名前面加上p_告诉cognos是参数的含义,例如你的参数名为date,那么需要输入&p_date,如果参数名为p_date,那么需要输入&p_p_date;
如果参数值是英文或者数字可以直接写在后面,如果是中文请先进行URL-UTF8转码操作,然后赋值给参数,可以借助《Encode_ Decode Tools URL编码解码工具.》
3.2 树形参数 如果传入的参数是树形参数,则不可以直接通过&p_XXX方式传入。
所以我们需要把参数整理为member类型:
格式为:[数据源].[常规维度].[维度]->:[PC].[@MEMBER].[编码]
例如:[DataBase].[Organ].[Organ1].[Organ2]->:[PC].[@MEMBER].[1001]
[PC]不清楚在干嘛,写成[DataBase].[@MEMBER].[1001]、[@MEMBER].[1001]也不会有错
如果输入格式错误,他会提示:
可以看到,红框内是逗号,分割内容是[DataBase].[Organ].[Organ1].[Organ2]的层级关系,所以需要按要求正确输入格式内容;最后红框内乱码,因为输入了中文,需要转码才可以;
3.3 日期参数 如果设置不对,会提示:
所以格式为:&p_p_date=2019-06-30 00:00:00
4、把run.prompt=true改为run.prompt=false,这样就不会走提示页,直接提交到报表页;
5、还有不懂的,可以看下官方教程
对应的Cognos页面也要有一些修改,请参考下一文章
2020-01-19补充
1、如果报表设置的是单点登录而不是匿名访问,则需要传送名称空间、用户名、密码三个值,否则过一段时间就需要重新登录才能通过URL访问;
路径后拼接:CAMNamespace=namespace&CAMUsername=admin&CAMPassword=admin