Chinaunix首页 | 论坛 | 博客
  • 博客访问: 7319081
  • 博文数量: 444
  • 博客积分: 10593
  • 博客等级: 上将
  • 技术积分: 3852
  • 用 户 组: 普通用户
  • 注册时间: 2006-05-09 15:26
文章分类

全部博文(444)

文章存档

2014年(1)

2013年(10)

2012年(18)

2011年(35)

2010年(125)

2009年(108)

2008年(52)

2007年(72)

2006年(23)

分类: 系统运维

2012-05-16 08:36:53

cognos一值传多参我研究出了很多方案,目前是采用的方式是,在framework中的业务视图的sql中 写类似如下语法 in (#csv( split ( ',', prompt("cporgcd","token","") ))# ),实际上我们的语句比这个复杂得多,但我不能泄密,总之嵌套了很多函数。然后在url后面加p_param=‘1002,1003,1004'的方式,但这种方式有两个明显的缺点,第一如果报表页面上没有引用该维度,参数是不能起到过滤作用的,其二这个参数可能会很长很长,以至于超过最大url长度,并且有可能有宏函数解析出错的风险。 

因此决定采用新的方案,这种方案看似简单,实际上解决了一个很棘手的问题,在framework中定义全局过滤器(注意不是在维度的那个页签中的filter,而是整体的filter),定义的方式很简单,直接写 in (?param?)即可,然后在report studio中引入该维度即可,注意要想灵活的让该filter不起作用,可以设置其用途为可选,这样不传参就是代表查询全部,这解决了宏函数和不要用不起作用的问题,并且在访问报表的时候采用post的方式传递参数,这样又解决了url过长的问题,可以说一举两得。 

post传参参考如下, 

如果通过url拼接字符串的话,太麻烦。还是选择用表单提交。

name="frm"  method="post" target="gg">

 

----------传参,我的参数是随便起的。

------------这个必须写,不然cognos认为参数没有结束,还停留在“提示页面”。有了这段代码就可以直接到结果页面了。

如果参数的设置是in,就有点问题。因为在cognos报表中的设置:[列表字段] in ('参数1','参数2','参数3'),可是将:'参数1','参数2','参数3'通过url就不能传给报表。解决:。……

首先,没有setParameter方法,只有getParameter,所以一般只区分getAttribute和getParameter的区别。 

getAttribute表示从request范围取得设置的属性,必须要先setAttribute设置属性,才能通过getAttribute来取得,设置与取得的为Object对象类型getParameter表示接收参数,参数为页面提交的参数,包括:表单提交的参数、URL重写(就是xxx?id=1中的id)传的参数等,因此这个并没有设置参数的方法(没有setParameter),而且接收参数返回的不是Object,而是String类型 

getAttribute表示从request范围取得设置的属性,必须要先setAttribute设置属性,才能通过getAttribute来取得,设置与取得的为Object对象类型 getParameter表示接收参数,参数为页面提交的参数,包括:表单提交的参数、URL重写(就是xxx?id=1中的id)传的参数等,因此这个并没有设置参数的方法(没有setParameter),而且接收参数返回的不是Object,而是String类型 

 

  

  

string [] arr = request.getParameterValues("arr"); 

 

 

 

 

 

 

 

 

 

  

 

 

 

 

  

 

 

 

 

 Cognos 8.3 + JSP前端集成方案

 1.       在报表设计器中,对需要传递参数的字段设置“明细过滤器”。比如:[CompanyName] = ?aa?

 2.       回到Cognos门户,找到刚才设置参数的报表,按照下图单击“属性”按钮。

 3.       记录本张报表的ID,后面的JSP页面会到,然后单击“查看搜索路径、ID和URL”。 

 4.       记录本张报表的“搜索路径”。“默认操作URL”是可选的,如果报表不需要条件,直接可以用这个地方访问。

 5.       新建一个Java Web项目( .NET,PHP,  ASP,  RoR,Django 等其它web项目都行)。新建一个index.jsp页面,代码如下:

 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

 

 

     

        cogons

       

       

       

       

       

       

     

     

 

      

            Target="_blank">

           

测试Cognos 8.3 + JSP前端集成参数传递

           

Cognos URL:

           

报表名称:order_1

           

搜索路径:/content/package[@name='order_detail']/report[@name='order_1']

           

传递的参数:p_aa (注意这里必须用 "p_" 做前缀表示是参数,否则无法生效)

           

           

           

           

           

           

           

           

       

       

     

 

 

10. 下面的是最简单的cognos自动登陆实现文档.在安装过cognos的机器上,如果初始用户名和密码都没有改变,可以实现自动登陆.这里说一句,cognos的技术支持太薄弱了,什么都要用户自己摸索,为什么不开放些,也好有利于自己的发展. 

目前cognos被客户批的厉害,估计下面cognos的销售情况会有较大的波动.谁让他不开放的! 

  

 

无标题文档 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

                                                

                                                

                                                

                                                

                                                

                                                

                                                

                                                

                                                

                                                

                                                

                                                

                                                

                                                日期:

                                                缴款方式:

                                                

                                                

                                                

阅读(6431) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~