<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_冯东的博客</title><subtitle type="text">每天学一点，不断进取</subtitle><id>http://feed.cnblogs.com/blog/u/19467/rss</id><updated>2011-12-04T07:48:16Z</updated><author><name>冯东</name><uri>http://www.cnblogs.com/interboy/</uri></author><generator>feed.cnblogs.com</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/interboy/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/19467/rss"/><entry><id>http://www.cnblogs.com/interboy/archive/2011/12/04/2275498.html</id><title type="text">Cognos10 RedHat5.4 X64 安装记录</title><summary type="text">上周年假，在家里歇了几天，提前回北京。周末抽空在RedHat5.4上装了cognos10，中途遇到些麻烦，下面与大家分享一下安装的过程首先创建用户和组和安装文件夹等准备工作[root@CogBISvr ~]# groupadd -g cog #建立cog组[root@CogBISvr ~]# useradd -g cog cognos #建立cognos用户，并放到cog组中[root@CogBISvr ~]# passwd cognos #修改cognos的密码Changing password for user cognos.New UNIX password: Retype new ..</summary><published>2011-12-04T07:48:00Z</published><updated>2011-12-04T07:48:00Z</updated><author><name>冯东</name><uri>http://www.cnblogs.com/interboy/</uri></author><link rel="alternate" href="http://www.cnblogs.com/interboy/archive/2011/12/04/2275498.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/interboy/archive/2011/12/04/2275498.html"/><content type="html">&lt;p&gt;上周年假，在家里歇了几天，提前回北京。周末抽空在RedHat5.4上装了cognos10，中途遇到些麻烦，下面与大家分享一下安装的过程&lt;br /&gt;首先创建用户和组和安装文件夹等准备工作&lt;br /&gt;&lt;br /&gt;[root@CogBISvr ~]# groupadd -g cog&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;#建立cog组&lt;br /&gt;[root@CogBISvr ~]# useradd -g cog cognos&amp;nbsp;&amp;nbsp; &amp;nbsp;#建立cognos用户，并放到cog组中&lt;br /&gt;[root@CogBISvr ~]# passwd cognos&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;#修改cognos的密码&lt;br /&gt;Changing password for user cognos.&lt;br /&gt;New UNIX password: &lt;br /&gt;Retype new UNIX password: &lt;br /&gt;passwd: all authentication tokens updated successfully.&lt;br /&gt;&lt;br /&gt;[root@CogBISvr ~]# mkdir /cognos&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;#建立cognos安装目录&lt;br /&gt;[root@CogBISvr ~]# mkdir /cognos/soft&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;#建立安装介质存放目录&lt;br /&gt;[root@CogBISvr ~]# chown -R cognos:cog /cognos &amp;nbsp;&amp;nbsp; &amp;nbsp;#将目录的所有者设置为cognos&lt;br /&gt;&lt;br /&gt;安装cognos需要提前设置好java环境，所以先要安装jdk，从oracle官方下载，然后传到linux上&lt;br /&gt;&lt;br /&gt;[root@CogBISvr soft]# chmod +x jdk-6u29-linux-x64-rpm.bin&amp;nbsp;&amp;nbsp; &amp;nbsp;#赋予可执行权限 &lt;br /&gt;[root@CogBISvr soft]# ./jdk-6u29-linux-x64-rpm.bin &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;#开始安装（一定要用root用户进行安装，权限低的用户会报错）&lt;br /&gt;Unpacking...&lt;br /&gt;Checksumming...&lt;br /&gt;Extracting...&lt;br /&gt;UnZipSFX 5.50 of 17 February 2002, by Info-ZIP (Zip-Bugs@lists.wku.edu).&lt;br /&gt;&amp;nbsp; inflating: jdk-6u29-linux-amd64.rpm &amp;nbsp;&lt;br /&gt;&amp;nbsp; inflating: sun-javadb-common-10.6.2-1.1.i386.rpm &amp;nbsp;&lt;br /&gt;&amp;nbsp; inflating: sun-javadb-core-10.6.2-1.1.i386.rpm &amp;nbsp;&lt;br /&gt;&amp;nbsp; inflating: sun-javadb-client-10.6.2-1.1.i386.rpm &amp;nbsp;&lt;br /&gt;&amp;nbsp; inflating: sun-javadb-demo-10.6.2-1.1.i386.rpm &amp;nbsp;&lt;br /&gt;&amp;nbsp; inflating: sun-javadb-docs-10.6.2-1.1.i386.rpm &amp;nbsp;&lt;br /&gt;&amp;nbsp; inflating: sun-javadb-javadoc-10.6.2-1.1.i386.rpm &amp;nbsp;&lt;br /&gt;Preparing...&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ########################################### [100%]&lt;br /&gt;&amp;nbsp;&amp;nbsp; 1:jdk&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ########################################### [100%]&lt;br /&gt;Unpacking JAR files...&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rt.jar...&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; jsse.jar...&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; charsets.jar...&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tools.jar...&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; localedata.jar...&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; plugin.jar...&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; javaws.jar...&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; deploy.jar...&lt;br /&gt;Installing JavaDB&lt;br /&gt;Preparing...&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ########################################### [100%]&lt;br /&gt;&amp;nbsp;&amp;nbsp; 1:sun-javadb-common&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ########################################### [ 17%]&lt;br /&gt;&amp;nbsp;&amp;nbsp; 2:sun-javadb-core&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ########################################### [ 33%]&lt;br /&gt;&amp;nbsp;&amp;nbsp; 3:sun-javadb-client&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ########################################### [ 50%]&lt;br /&gt;&amp;nbsp;&amp;nbsp; 4:sun-javadb-demo&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ########################################### [ 67%]&lt;br /&gt;&amp;nbsp;&amp;nbsp; 5:sun-javadb-docs&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ########################################### [ 83%]&lt;br /&gt;&amp;nbsp;&amp;nbsp; 6:sun-javadb-javadoc&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ########################################### [100%]&lt;br /&gt;&lt;br /&gt;Java(TM) SE Development Kit 6 successfully installed.&lt;br /&gt;&lt;br /&gt;Product Registration is FREE and includes many benefits:&lt;br /&gt;* Notification of new versions, patches, and updates&lt;br /&gt;* Special offers on Oracle products, services and training&lt;br /&gt;* Access to early releases and documentation&lt;br /&gt;&lt;br /&gt;Product and system data will be collected. If your configuration&lt;br /&gt;supports a browser, the JDK Product Registration form will&lt;br /&gt;be presented. If you do not register, none of this information&lt;br /&gt;will be saved. You may also register your JDK later by&lt;br /&gt;opening the register.html file (located in the JDK installation&lt;br /&gt;directory) in a browser.&lt;br /&gt;&lt;br /&gt;For more information on what data Registration collects and &lt;br /&gt;how it is managed and used, see:&lt;br /&gt;http://java.sun.com/javase/registration/JDKRegistrationPrivacy.html&lt;br /&gt;&lt;br /&gt;Press Enter to continue.....&lt;br /&gt;&lt;br /&gt;安装完成，默认安装到了/usr/java/jdk1.6.0_29这个路径下&lt;br /&gt;接下来进入cognos用户为其设置环境变量&lt;br /&gt;&lt;br /&gt;[root@CogBISvr soft]# su - cognos&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;#切换到cognos用户下&lt;br /&gt;[cognos@CogBISvr ~]$ vi .bash_profile &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;#编辑脚本&lt;br /&gt;&lt;br /&gt;# .bash_profile&lt;br /&gt;&lt;br /&gt;# Get the aliases and functions&lt;br /&gt;if [ -f ~/.bashrc ]; then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; . ~/.bashrc&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;# User specific environment and startup programs&lt;br /&gt;&lt;br /&gt;PATH=$PATH:$HOME/bin&lt;br /&gt;&lt;br /&gt;export JAVA_HOME=/usr/java/jdk1.6.0_29&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;#增加JAVA_HOME变量&lt;br /&gt;&lt;br /&gt;PATH=$JAVA_HOME/bin:$PATH&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;#加入到PATH中&lt;br /&gt;&lt;br /&gt;export PATH&lt;br /&gt;&lt;br /&gt;保存退出（ESC -&amp;gt;:wq-&amp;gt;回车）&lt;br /&gt;&lt;br /&gt;[cognos@CogBISvr ~]$ source .bash_profile &amp;nbsp;&amp;nbsp; &amp;nbsp;#使profile生效&lt;br /&gt;[cognos@CogBISvr ~]$ &lt;br /&gt;[cognos@CogBISvr ~]$ java -version&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;#测试是否生效。输出正确&lt;br /&gt;java version "1.6.0_29"&lt;br /&gt;Java(TM) SE Runtime Environment (build 1.6.0_29-b11)&lt;br /&gt;Java HotSpot(TM) 64-Bit Server VM (build 20.4-b02, mixed mode)&lt;br /&gt;&lt;br /&gt;放入cognos安装盘，进入安装目录/media/bisrvr101ml/linuxi38664h&lt;br /&gt;&lt;br /&gt;[cognos@CogBISvr linuxi38664h]$ ./issetup &amp;nbsp;&amp;nbsp; &amp;nbsp;#执行安装程序&lt;br /&gt;-bash: ./issetup: 权限不够&lt;br /&gt;提示权限不够，查看一下发现用户和组都是数字&lt;br /&gt;[cognos@CogBISvr media]$ ls -al&lt;br /&gt;总计 30&lt;br /&gt;drwxr-xr-x&amp;nbsp; 3 root root 4096 12-03 09:33 .&lt;br /&gt;drwxr-xr-x 26 root root 4096 12-03 08:52 ..&lt;br /&gt;drwxrwxr-x&amp;nbsp; 5 4205&amp;nbsp; 364 2048 2010-10-16 bisrvr101ml&lt;br /&gt;-rw-r--r--&amp;nbsp; 1 root root&amp;nbsp;&amp;nbsp; 66 12-03 09:33 .hal-mtab&lt;br /&gt;-rw-------&amp;nbsp; 1 root root&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 12-03 09:33 .hal-mtab-lock&lt;br /&gt;把安装程序拷贝到硬盘上进行安装&lt;br /&gt;[cognos@CogBISvr media]$ cp -R bisrvr101ml /cognos/soft/bisrv101ml&amp;nbsp;&amp;nbsp; &amp;nbsp;#将安装程序拷贝到硬盘&lt;br /&gt;拷贝完成后，进入到硬盘的目录中执行安装&lt;br /&gt;[cognos@CogBISvr linuxi38664h]$ ./issetup &amp;nbsp;&amp;nbsp; &amp;nbsp;#执行安装程序&lt;br /&gt;./issetup: error while loading shared libraries: libXm.so.3: cannot open shared object file: No such file or directory&lt;br /&gt;安装报错，以libXm.so.3为关键字上百度搜索，发现论坛里有人已经解决了这个问题http://www.cognoschina.net/?action-blogdetail-uid-301-id-3917.html&lt;br /&gt;需要安装libXp-1.0.0-8.1.el5.x86_64.rpm、openmotif-2.3.1-5.el5_6.2.x86_64.rpm 两个rpm包&lt;br /&gt;然后在创建软连接，但是我安装完成后在/usr/lib64下创建软连接问题依旧。&lt;br /&gt;想了一下，是不是调用的是32位的呢？卸载掉64为的，安装libXp-1.0.0-8.1.el5.i386.rpm和openmotif-2.3.1-2.el5.i386.rpm&lt;br /&gt;两个32位的，问题解决了（安装rpm在root用户中执行）&lt;br /&gt;&lt;br /&gt;[root@CogBISvr lib64]# cd /media/RHEL_5.4\ x86_64\ DVD/Server/&lt;br /&gt;[root@CogBISvr Server]# ls |grep libXp-&lt;br /&gt;libXp-1.0.0-8.1.el5.i386.rpm&lt;br /&gt;libXp-1.0.0-8.1.el5.x86_64.rpm&lt;br /&gt;libXp-devel-1.0.0-8.1.el5.i386.rpm&lt;br /&gt;libXp-devel-1.0.0-8.1.el5.x86_64.rpm&lt;br /&gt;[root@CogBISvr Server]# rpm -ivh libXp-1.0.0-8.1.el5.i386.rpm&lt;br /&gt;warning: libXp-1.0.0-8.1.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186&lt;br /&gt;Preparing...&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ########################################### [100%]&lt;br /&gt;&amp;nbsp;&amp;nbsp; 1:libXp&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ########################################### [100%]&lt;br /&gt;[root@CogBISvr Server]# ls |grep openmotif&lt;br /&gt;openmotif22-2.2.3-18.i386.rpm&lt;br /&gt;openmotif22-2.2.3-18.x86_64.rpm&lt;br /&gt;openmotif-2.3.1-2.el5.i386.rpm&lt;br /&gt;openmotif-2.3.1-2.el5.x86_64.rpm&lt;br /&gt;openmotif-devel-2.3.1-2.el5.i386.rpm&lt;br /&gt;openmotif-devel-2.3.1-2.el5.x86_64.rpm&lt;br /&gt;[root@CogBISvr Server]# rpm -ivh openmotif-2.3.1-2.el5.i386.rpm&lt;br /&gt;warning: openmotif-2.3.1-2.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186&lt;br /&gt;Preparing...&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ########################################### [100%]&lt;br /&gt;&amp;nbsp;&amp;nbsp; 1:openmotif&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ########################################### [100%]&lt;br /&gt;[root@CogBISvr Server]# cd /usr/lib/&lt;br /&gt;[root@CogBISvr lib]# ln libXm.so.4 libXm.so.3&lt;br /&gt;到此为止，cognos的准备工作都已完成，执行./issetup就可以进行安装了。&lt;br /&gt;安装的过程很顺利，修改好安装路径后一路next就可以了，安装语言选择英文，我选中文会乱码，估计是对应的字体没有安装&lt;br /&gt;安装完成后，启动cognos configuration，配置contentsotre时发现一个问题，我用的是sqlserver2000配置数据库用户的密码时，密码框不可编辑&lt;br /&gt;所以contentstore配置失败，后来用Xmanager的Xstart将图形界面在本地展现时才配置成功。&lt;br /&gt;启动cognos，发现启动失败，查看日志发现dispatch注册content manager指向了其他服务器，非常奇怪，因为我没有任何其他的配置，后来把指向的cognos服务停掉，重新启动，一切正常。&lt;/p&gt;&lt;img src="http://www.cnblogs.com/interboy/aggbug/2275498.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/interboy/archive/2011/12/04/2275498.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/interboy/archive/2010/11/08/1872026.html</id><title type="text">不用JavaScript实现列表排序（利用钻取实现）</title><summary type="text">实现演示的视频已经发到论坛中http://www.cognoschina.net/club/thread-10286-1-1.html第一次参加报表比赛时用JavaScript实现列表数值字段的排序，虽然这个很实用，但是JavaScript对不同内核的浏览器支持程度不一样，而且一般做报表的开发人员可能对JavaScript都不是很熟悉，所以虽然我认为我写的已经很详细了，但是还是有好多网友在使用的过...</summary><published>2010-11-08T11:10:00Z</published><updated>2010-11-08T11:10:00Z</updated><author><name>冯东</name><uri>http://www.cnblogs.com/interboy/</uri></author><link rel="alternate" href="http://www.cnblogs.com/interboy/archive/2010/11/08/1872026.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/interboy/archive/2010/11/08/1872026.html"/><content type="html">&lt;p&gt;&lt;span style="font-family: 宋体;"&gt;实现演示的视频已经发到论坛中&lt;a href="http://www.cognoschina.net/club/thread-10286-1-1.html" target="_blank"&gt;http://www.cognoschina.net/club/thread-10286-1-1.html&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;第一次参加报表比赛时用JavaScript实现列表数值字段的排序，虽然这个很实用，但是JavaScript对不同内核的浏览器支持程度不一样，而且一般做报表的开发人员可能对JavaScript都不是很熟悉，所以虽然我认为我写的已经很详细了，但是还是有好多网友在使用的过程中遇到很多问题，问我应该怎么调试JavaScript，然而JavaScript却不是三言两语能偶说清楚的。后来我突然想到是不是可以利用追溯来实现排序呢？我试了一下午，终于有所成。后来我就因为其他事耽搁了个把月，今天利用周末整理一下。发给大伙&lt;/p&gt;&lt;p&gt;排序实现的思路这里就不提了，可以参考我前两天发的博文&lt;/p&gt;&lt;p&gt;用基于自身的追溯来实现排序，即：报表的钻取对象还是它自己，在钻取过程中将参数改变，实现排序。&lt;/p&gt;&lt;p&gt;以前两天发的任意字段列表排序例。打开排序的列表如下图所示&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;img src="http://pic002.cnblogs.com/images/2010/15909/2010110819073359.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;为了能够在追溯中改变参数，所以必须多创建几个数据项，我们先需要的数据项有5个，升序、降序（UP、DOWN）以及三个需要排序的列（A、B、C）。如下图所示：&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;img src="http://pic002.cnblogs.com/images/2010/15909/2010110819074973.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;数据项表达式就是参数所要接收的值。如图所示UP数据项的表示为&amp;rsquo;UP&amp;rsquo;。&lt;/p&gt;&lt;p&gt;接下来为列头增加排序显示的图片，先点击解锁，并将图像组件放到&amp;ldquo;年份&amp;rdquo;列头中，如下图所示：&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;img src="http://pic002.cnblogs.com/images/2010/15909/2010110819075810.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;点击图片，在属性栏中的来源类型改为&amp;ldquo;报表表达式&amp;rdquo;，并将表达式的内容设置为&lt;/p&gt;&lt;p&gt;IF ( ParamValue('sorttype') = 'UP' ) &lt;/p&gt;&lt;p&gt;THEN&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ('http://127.0.0.1:9300/p2pd/pat/images/sortState_ascending.gif' )&lt;/p&gt;&lt;p&gt;ELSE &lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ('http://127.0.0.1:9300/p2pd/pat/images/sortState_descending.gif' )&lt;/p&gt;&lt;p&gt;该表达式根据传递的参数动态显示图片。&lt;/p&gt;&lt;p&gt;接下来为年份创建追溯定义，为了便于理解，我们将名称定义为UP，将目标报表选中自身&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;img src="http://pic002.cnblogs.com/images/2010/15909/2010110819080757.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;点击编辑设置传递的参数&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;img src="http://pic002.cnblogs.com/images/2010/15909/2010110819081512.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;将方法选择为&amp;ldquo;传递数据项值&amp;rdquo;，并未参数设置相应的值，点击确定&lt;/p&gt;&lt;p&gt;我们在复制一下年份，并该其追溯名称为DOWN，将sorttype传递的数据项值改为DOWN&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;img src="http://pic002.cnblogs.com/images/2010/15909/2010110819082474.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;这时运行报表，看到年份列有两个年份，点击前一个会按照年份进行升序排列，点后面一个会按照降序排列。&lt;/p&gt;&lt;p&gt;为了避免这种现象，我们需要用条件样式来控制显示。&lt;/p&gt;&lt;p&gt;切到条件资源管理器中，新建一个布尔值变量IsUP，表达式设置为&lt;/p&gt;&lt;p&gt;ParamValue('sorttype') = 'UP'&lt;/p&gt;&lt;p&gt;将两个年份的样式变量都设置为IsUP，并将前一个年份为&amp;ldquo;是&amp;rdquo;时不显示（方框类型设置为空），后一个年份为&amp;ldquo;否&amp;rdquo;时不显示。&lt;/p&gt;&lt;p&gt;再次运行报表就只有一个年份，点击就会进行排序，并且图片提示当前是升序还是降序&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;img src="http://pic002.cnblogs.com/images/2010/15909/2010110819083897.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;再次进入条件资源管理器，创建一个字符串变量sortColumn，表达式为: &lt;/p&gt;&lt;p&gt;ParamValue('sortcolumn')&lt;/p&gt;&lt;p&gt;并设置3个值A、B、C&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;img src="http://pic002.cnblogs.com/images/2010/15909/2010110819084867.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;选中图片，并将sortColumn设为样式变量，根据参数的值判断图片是否显示。以年份为例，随对应的参数值为A，所以需要经B、C、其他所对应的方框类型设置为空。&lt;/p&gt;&lt;p&gt;此时一个字段的排序就已经完成了，我们将这三个对象复制一下啊，分别粘贴到后面几列中，然后分别设置追溯传递的值和相应的样式就可以了。&lt;/p&gt;&lt;p&gt;最终效果如下图所示&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;img src="http://pic002.cnblogs.com/images/2010/15909/2010110819090190.png" alt="" /&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/interboy/aggbug/1872026.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/interboy/archive/2010/11/08/1872026.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/interboy/archive/2010/11/07/1871161.html</id><title type="text">从命令行启动Cognos的方法</title><summary type="text">昨天朋友培训完cognos，客户说他们有台服务器有问题cognos服务启动不起来，他去帮忙解决了，本来是约好到培训楼下见面的，我上去帮忙看了一下。启动过程一点日志信息都没有输出直接报0103错误，后来我发现在服务中有个IBM Cognos Content store（大概是这个，具体名字也记不清了）的服务，判断这个问题应该是安装过程中选中了Cognos Content Database，但是在Co...</summary><published>2010-11-07T09:22:00Z</published><updated>2010-11-07T09:22:00Z</updated><author><name>冯东</name><uri>http://www.cnblogs.com/interboy/</uri></author><link rel="alternate" href="http://www.cnblogs.com/interboy/archive/2010/11/07/1871161.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/interboy/archive/2010/11/07/1871161.html"/><content type="html">&lt;p&gt;昨天朋友培训完cognos，客户说他们有台服务器有问题cognos服务启动不起来，他去帮忙解决了，本来是约好到培训楼下见面的，我上去帮忙看了一下。&lt;br /&gt;启动过程一点日志信息都没有输出直接报0103错误，后来我发现在服务中有个IBM Cognos Content store（大概是这个，具体名字也记不清了）的服务，判断这个问题应该是安装过程中选中了Cognos Content Database，但是在Cognos Configuration中配置的content store却是Oracle导致的。因为如果安装过程中你选中了cognos content database组件，那么你配置的content store必须是 cognos content database，配置其他的都不行。所以把cognos卸载，重新安装，本以为这次应该没有问题了，但是还是报错，想着可能是环境变量的问题，又把环境变量改了改，还是不行，从cognos configuration启动还是报错，不过我感觉一切都没有问题了。&lt;br /&gt;所以换了种方式，从命令行启动，通过调用cogbootstrapservice来启动cognos。在windows环境中cognos第一次启动会创建一个系统服务&lt;br /&gt;&amp;nbsp;&lt;img src="http://pic002.cnblogs.com/images/2010/15909/2010110717214919.png" alt="" /&gt;&lt;br /&gt;从上图可以看到服务所调用的可执行文件就是cogbootstrapservice.exe，服务类型为自动，所以系统启动后会自动调用此服务，启动cognos。Ps：如果是服务器中启动类型最好是自动，省的有人再去启动它，如果是自己的机器安装仅是为了学习，最好设置为手动，要不然你的系统会在登录时等很长时间。&lt;br /&gt;到命令行里，切到c8_localation/bin目录下，执行cogbootstrapservice.exe &amp;ndash;help查看该命令的帮助&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Manage the Cognos Bootstrap Service.&lt;/p&gt;&lt;p&gt;By default the service name is determined from startup configuration,&lt;br /&gt;but may be overriden by -name.&lt;/p&gt;&lt;p&gt;Note that on Win32 CBS operates invisibly, with no console window&lt;br /&gt;unless -console is specified.&amp;nbsp; -help, -d and -v are exceptions: they&lt;br /&gt;always open a console.&lt;/p&gt;&lt;p&gt;The option -stdoutLog=DEBUG|INFO|WARN|ERROR|FATAL is optional for all&lt;br /&gt;flavours of the command line.&amp;nbsp; It causes log messages that describe the&lt;br /&gt;actvities of CBS to be written to stdout.&lt;/p&gt;&lt;p&gt;Usage:&lt;/p&gt;&lt;p&gt;&amp;nbsp;cogbootstrapservice -i[a|m] [-name=serviceName] [-console]&lt;br /&gt;&amp;nbsp; Install as service.&amp;nbsp; Service is automatically started (-i or -ia) or manually (-im).&lt;/p&gt;&lt;p&gt;&amp;nbsp;cogbootstrapservice -u [-name=serviceName] [-console]&lt;br /&gt;&amp;nbsp; Uninstall the service.&lt;/p&gt;&lt;p&gt;&amp;nbsp;cogbootstrapservice -isRegistered [-name=serviceName] [-console]&lt;br /&gt;&amp;nbsp; Test if the service is installed.&lt;br /&gt;&amp;nbsp; Exit code is 0 if the service is not installed, otherwise is the numeric value of the "Start" parameter:2 - auto, 3 - manual, 4 - disabled.&lt;/p&gt;&lt;p&gt;&amp;nbsp;cogbootstrapservice -start [-name=serviceName] [-timeLimitSec=nn] [-console]&lt;br /&gt;&amp;nbsp; Start the service.&amp;nbsp; Note that the operation blocks until the service is started or the specified time limit is reached.&lt;/p&gt;&lt;p&gt;&amp;nbsp;cogbootstrapservice -stop [-name=serviceName] [-timeLimitSec=nn] [-console]&lt;br /&gt;&amp;nbsp; Stop the service.&amp;nbsp; Note that the operation blocks until the service is stopped or the specified time limit is reached.&lt;/p&gt;&lt;p&gt;&amp;nbsp;cogbootstrapservice -isrunning [-name=serviceName] [-console]&lt;br /&gt;&amp;nbsp; Test is the service is running.&amp;nbsp; Exit code of 0 indicates that the service is running.&lt;/p&gt;&lt;p&gt;&amp;nbsp;cogbootstrapservice -d&lt;br /&gt;&amp;nbsp; Run the service as a console application.&lt;/p&gt;&lt;p&gt;其实最常用的也就是-d &amp;ndash;start &amp;ndash;stop这几个参数，-I &amp;ndash;u &amp;ndash;isRegistered这几个一般都是Cognos Configuration调用用来创建或删除服务用的&lt;br /&gt;-d参数表示要启动一个控制台窗口&lt;br /&gt;-start表示启动服务，帮助说这个操作是个阻塞型操作，知道服务启动才会往下执行，但是我在windows下调用时并有发现他是阻塞的。&lt;br /&gt;-stop关闭服务器，同样的，我也没有发现它是阻塞的&lt;br /&gt;如果我想启动服务执行 cogbootstraoservice.exe &amp;ndash;start就可以了&lt;br /&gt;如果想让它弹出个窗口 cogbootstrapservice.exe &amp;ndash;d &amp;ndash;start(如果在telnet调用的话服务器中不弹出窗口)&lt;br /&gt;想关闭服务 执行 cogbootstrapservice.ext &amp;ndash;stop&lt;br /&gt;说到这里还有一种方式也是在可以在命令行里启动cognos服务，比cogbootstrapservice更简单，它就是c8/bin目录下的startup.bat和shutdown.bat&lt;br /&gt;Cogbootstrapservice和startup.bat的区别在于，cogbootstrapservice会启动tomcat的同时还启动一个守护进程，当tomcat被意外终止，它还会再次调用，而startup.bat则没有守护进程&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/interboy/aggbug/1871161.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/interboy/archive/2010/11/07/1871161.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/interboy/archive/2010/11/05/1869982.html</id><title type="text">如何让列表实现任意字段类型的排序</title><summary type="text">在第一次参加报表比赛时用JavaScript实现了列表基于数值型字段的排序http://www.cognoschina.net/home/space.php?uid=652&amp;do=blog&amp;id=547针对数值字段排序就是将列表中的一个数据项设置为升序，根据参数判断如果是升序就直接显示数值，如果是降序则执行-1*数值。数据项的表达式为IF ( ?sorttype? = 'UP' )...</summary><published>2010-11-05T07:16:00Z</published><updated>2010-11-05T07:16:00Z</updated><author><name>冯东</name><uri>http://www.cnblogs.com/interboy/</uri></author><link rel="alternate" href="http://www.cnblogs.com/interboy/archive/2010/11/05/1869982.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/interboy/archive/2010/11/05/1869982.html"/><content type="html">&lt;p&gt;&lt;span style="font-size: 12pt;"&gt;在第一次参加报表比赛时用JavaScript实现了列表基于数值型字段的排序&lt;br /&gt;http://www.cognoschina.net/home/space.php?uid=652&amp;amp;do=blog&amp;amp;id=547&lt;br /&gt;针对数值字段排序就是将列表中的一个数据项设置为升序，根据参数判断如果是升序就直接显示数值，如果是降序则执行-1*数值。&lt;br /&gt;数据项的表达式为&lt;br /&gt;IF ( ?sorttype? = 'UP' ) THEN&lt;br /&gt;(&lt;br /&gt;[职工人数]&lt;br /&gt;)&lt;br /&gt;ELSE &lt;br /&gt;( -1*[职工人数] )&lt;br /&gt;上述思路只能对数值型字段进行排序，而字符型的排序却无能为力，后来有网友也讨论过如何对字符型进行排序，那个网友得出用两个数据项来实现，本来想把讨论的帖子贴出来给大家分享的，可今天翻了半天之前的帖子，没有找到。&lt;br /&gt;我这里来说一下实现思路&lt;br /&gt;两个数据项在列表中分别设置为升序、降序。升序数据项的表达式思路如下：&lt;br /&gt;IF ( ?sorttype? = 'UP' ) THEN&lt;br /&gt;(&lt;br /&gt;//根据参数判断要展现的列,比如 IF ( ?sortcol? = 'A' ) THEN([人员姓名])ELSE([职工人数])&lt;br /&gt;)&lt;br /&gt;ELSE ( null )&lt;br /&gt;降序数据项的表达式思路如下：&lt;br /&gt;IF ( ?sorttype? = 'DOWN' ) THEN&lt;br /&gt;(&lt;br /&gt;//根据参数判断要展现的列,比如 IF ( ?sortcol? = 'A' ) THEN([人员姓名])ELSE([职工人数])&lt;br /&gt;)&lt;br /&gt;ELSE ( null )&lt;br /&gt;所以当传递的参数是UP时，起决定性作用的是升序的数据项，因为降序的数据项为null&lt;br /&gt;当传递的参数为DOWN时，起决定性作用的是降序的数据项，因为升序的数据项为null&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 12pt;"&gt;思路明白了后我们来看如何在ReportStudio中实现排序&lt;br /&gt;我们基于Cognos式样的GO 数据仓库 (查询)包创建一个简单的list报表如下图所示：&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;img src="http://www.cognoschina.net/home/attachment/201011/5/652_12889398654HOw.png" alt="" /&gt;&lt;br /&gt;&lt;span style="font-size: 12pt;"&gt;其中年份、组织名称(级别3)是字符型数据，工资是数值型&lt;br /&gt;切换到查询资源管理器，为列表所用查询增加两个数据项升序、降序&lt;br /&gt;升序的表达式为&lt;br /&gt;IF ( ?sorttype? = 'UP' ) THEN&lt;br /&gt;(&lt;br /&gt;IF ( ?sortcolumn? = 'A') THEN&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ( [年份] )&lt;br /&gt;ELSE &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ( IF ( ?sortcolumn? = 'B' ) THEN&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ( [组织名称（级别 3）] )&lt;br /&gt;ELSE &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ( [工资] ) )&lt;br /&gt;)&lt;br /&gt;ELSE &lt;br /&gt;( null )&lt;br /&gt;降序的表达式为：&lt;br /&gt;IF ( ?sorttype? = 'DOWN' ) THEN&lt;br /&gt;(&lt;br /&gt;IF ( ?sortcolumn? = 'A') THEN&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ( [年份] )&lt;br /&gt;ELSE &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ( IF ( ?sortcolumn? = 'B' ) THEN&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ( [组织名称（级别 3）] )&lt;br /&gt;ELSE &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ( [工资] ) )&lt;br /&gt;)&lt;br /&gt;ELSE &lt;br /&gt;( null )&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 12pt;"&gt;将升序和降序放到列表中，将升序所在列设置排序操作为升序，降序所在列排序操作为降序，如下图所示：&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;img src="http://www.cognoschina.net/home/attachment/201011/5/652_128893986782Xc.png" alt="" /&gt;&lt;br /&gt;&lt;span style="font-size: 12pt;"&gt;为了方便演示，我们分别为sorttype和sortcolumn创建下拉框，并为其设置静态值，运行效果如下图所示：&lt;br /&gt;&lt;/span&gt;&lt;img src="http://www.cognoschina.net/home/attachment/201011/5/652_1288939869big9.png" alt="" /&gt;&lt;img src="http://www.cognoschina.net/home/attachment/201011/5/652_1288939872Bz75.png" alt="" /&gt;&lt;br /&gt;操作视频录像上传到论坛中，下载地址&lt;a href="http://www.cognoschina.net/club/thread-10265-1-1.html" target="_blank"&gt;http://www.cognoschina.net/club/thread-10265-1-1.html&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/interboy/aggbug/1869982.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/interboy/archive/2010/11/05/1869982.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/interboy/archive/2010/10/28/1863695.html</id><title type="text">如何使导出的excel和报表分页设置不一样</title><summary type="text">我们以列表为例，默认的行数是20，超过20行，列表就会分页显示，如果我们导出excel，那么excel也会分成sheet导出，每个sheet是20行。页面展现时20行一页感觉可以，但是用户经常会提要把所有的数据导出到一个sheet中。坛子里也经常有人问怎么实现。我这里列出两种方式，第一种需要两张报表实现，第二种用一张报表实现。不管采用哪种方法思路都是一样的，我先来介绍一下我的实现思路：同一个列表设...</summary><published>2010-10-28T09:00:00Z</published><updated>2010-10-28T09:00:00Z</updated><author><name>冯东</name><uri>http://www.cnblogs.com/interboy/</uri></author><link rel="alternate" href="http://www.cnblogs.com/interboy/archive/2010/10/28/1863695.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/interboy/archive/2010/10/28/1863695.html"/><content type="html">&lt;p&gt;我们以列表为例，默认的行数是20，超过20行，列表就会分页显示，如果我们导出excel，那么excel也会分成sheet导出，每个sheet是20行。页面展现时20行一页感觉可以，但是用户经常会提要把所有的数据导出到一个sheet中。坛子里也经常有人问怎么实现。我这里列出两种方式，第一种需要两张报表实现，第二种用一张报表实现。&lt;/p&gt;&lt;p&gt;不管采用哪种方法思路都是一样的，我先来介绍一下我的实现思路：同一个列表设置的分页行数和导出excel的分sheet的条件是一样的，这是我们没法改变的，但是我们可以利用两个列表来实现，展现和导出的分页条件不一样，一个list是用来报表展现的，另一个list用来导出。&lt;/p&gt;&lt;p&gt;第一种方法：两张报表，利用穿透钻取来实现导出excel&lt;/p&gt;&lt;p&gt;以Cognos Sample中Sales and Marketing Zh (cube)作为我们演示的package，打开ReportStudio创建一个简单报表report_for_html只包含一个简单的列表，让数据展现时存在分页即可。如下图所示：&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;img src="http://pic002.cnblogs.com/images/2010/15909/2010102816575980.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;此时我们将该报表另存为一下，比如report_for_excel，结构都保持一致，只是将列表的分页设置为65535（可以不做此限制，但是如果不做限制，当导出数据超过65535时导出的excel因为单个sheet过大而不能打开）。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;img src="http://pic002.cnblogs.com/images/2010/15909/2010102816581087.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;打开report_for_html这张报表，在工具箱中拖一个文本项目到页面中，并将文本内容设置为&amp;ldquo;导出Excel&amp;rdquo;，选中文本项，点击追溯定义，为其设置到report_for_excel的追溯定义。&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2010/15909/2010102816582495.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;将报表设置为report_for_excel，格式选中Excel 2007或者其他格式。选中在新窗口中打开，点击确定，最终效果如下图所示&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;img src="http://pic002.cnblogs.com/images/2010/15909/2010102816592044.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;运行效果就是报表可以存在分页，导出的excel没有分页，如下图所示&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;img src="http://pic002.cnblogs.com/images/2010/15909/2010102816593684.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;注意事项：当报表存在过滤条件时，追溯定义中也必须把参数传递过去。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;第二种方法，在一个报表中实现。思路如下：还是两个列表，利用条件样式判断当前的输出模式，若为html则显示展现的list，若为excel则显示导出excel的list。&lt;/p&gt;&lt;p&gt;我们还选用和上次一样的列表，并复制一份，假定上面的list用来报表展现，下面的list用于导出excel，如下图所示：&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;img src="http://pic002.cnblogs.com/images/2010/15909/2010102816594965.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;进入条件资源管理器新建一个字符串变量，将表达式设置为ReportOutput()，该函数返回输出格式的名称。可能返回的值包括: CSV、HTML、layoutDataXML、MHT、PDF、rawXML、singleXLS、spreadsheetML、XLS、XML 和 XLWA。新建一个值为HTML，我这里演示只建了一个，可以在创建多个，这样可以控制的更细。&lt;/p&gt;&lt;p&gt;返回到页面资源管理器，为两个list设置样式变量为新建的&amp;ldquo;字符串1&amp;rdquo;，设置当值为&amp;ldquo;HTML&amp;rdquo;是，输出excel的list的方框类型为无，当值为其他时展现html的list的方框类型为无。&lt;/p&gt;&lt;p&gt;运行报表，显示分页展现的数据，选择导出excel时导出的excel则没有分sheet展现&lt;/p&gt;&lt;p&gt;操作演示的视频放到论坛里了，下载地址如下&lt;/p&gt;&lt;p&gt;http://www.cognoschina.net/club/thread-10061-1-1.html&lt;/p&gt;&lt;img src="http://www.cnblogs.com/interboy/aggbug/1863695.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/interboy/archive/2010/10/28/1863695.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/interboy/archive/2010/09/26/1835941.html</id><title type="text">基于Oracle触发器的报表版本保存工具</title><summary type="text">cognos本身没有版本控制工具，frameworkmanager和transformer的项目文件可以借助于cvs\svn等版本控制工具开控制版本，但是所有的报表都是存在content store里的，如果那张报表一不小心被误改或者删除了，那就是永久的了。如果之前没有备份的话那么这样报表就永远的消失了。前一段时间研究了一下content store，知道所有的报表定义都存储在cmobjprops...</summary><published>2010-09-26T05:45:00Z</published><updated>2010-09-26T05:45:00Z</updated><author><name>冯东</name><uri>http://www.cnblogs.com/interboy/</uri></author><link rel="alternate" href="http://www.cnblogs.com/interboy/archive/2010/09/26/1835941.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/interboy/archive/2010/09/26/1835941.html"/><content type="html">&lt;div id="blog_article" class="article "&gt;&lt;div class="resizeimg"&gt;&lt;div class="resizeimg2"&gt;&lt;div class="resizeimg3"&gt;&lt;div class="resizeimg4"&gt;&lt;p&gt;cognos本身没有版本控制工具，frameworkmanager和transformer的项目文件可以借助于cvs\svn等版本控制工具开控制版本，但是所有的报表都是存在content store里的，如果那张报表一不小心被误改或者删除了，那就是永久的了。如果之前没有备份的话那么这样报表就永远的消失了。&lt;br /&gt;前一段时间研究了一下content store，知道所有的报表定义都存储在cmobjprops7这张表中，我就在想是不是可以利用触发器捕获更新删除等操作，将之前的报表定义保存下来呢？所以我就在oracle上建了一张表cmobjversion，一个触发器cmrep_tr，一个方法getCmObjPath。其中触发器是针对表cmobjprops7，当它发生更新或者删除操作时，先获取之前的报表定义，并调用getCmObjPath获取报表存储路径，存储到cmobjversion表中。&lt;br /&gt;create table CMOBJVERSION&lt;br /&gt;(&lt;br /&gt;&amp;nbsp; MODIFYDATE DATE,&lt;br /&gt;&amp;nbsp; SPEC&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CLOB,&lt;br /&gt;&amp;nbsp; ACTION&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; VARCHAR2(32),&lt;br /&gt;&amp;nbsp; REPORTPATH NVARCHAR2(1000)&lt;br /&gt;);&lt;br /&gt;comment on column CMOBJVERSION.MODIFYDATE is '修改时间';&lt;br /&gt;comment on column CMOBJVERSION.SPEC is '报表定义';&lt;br /&gt;comment on column CMOBJVERSION.ACTION is '动作（删除、修改）';&lt;br /&gt;comment on column CMOBJVERSION.REPORTPATH is '报表存储路径';&lt;br /&gt;/&lt;br /&gt;create or replace function getCmObjPath(id in number) return varchar2 is&lt;br /&gt;&amp;nbsp; Result varchar2(4000);&lt;br /&gt;&amp;nbsp; pcmid&amp;nbsp; number;&lt;br /&gt;&amp;nbsp; cid&amp;nbsp;&amp;nbsp;&amp;nbsp; number;&lt;br /&gt;&amp;nbsp; cmname varchar2(4000);&lt;br /&gt;begin&lt;br /&gt;/*&lt;br /&gt;作者:interboy&lt;br /&gt;说明:该函数传入报表的cmid，返回报表的路径&lt;br /&gt;*/&lt;br /&gt;&amp;nbsp; cid := id;&lt;br /&gt;&amp;nbsp; loop&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; select a.pcmid, b.NAME&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; into pcmid, cmname&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; from cmobjects a, cmobjnames b&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; where a.cmid = b.CMID and b.ISDEFAULT =1&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; and a.cmid = cid;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; cid&amp;nbsp;&amp;nbsp;&amp;nbsp; := pcmid;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Result := cmname||'/'||Result;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; exit when pcmid = 0;&lt;br /&gt;&amp;nbsp; end loop;&lt;/p&gt;&lt;p&gt;&amp;nbsp; return(substr(Result,0,length(Result)-1));&lt;br /&gt;end getCmObjPath;&lt;br /&gt;/&lt;/p&gt;&lt;p&gt;create or replace trigger cmrep_tr&lt;br /&gt;&amp;nbsp; before delete or update on cmobjprops7&lt;br /&gt;&amp;nbsp; for each row&lt;br /&gt;begin&lt;br /&gt;&amp;nbsp; /*&lt;br /&gt;&amp;nbsp; 作者:interboy&lt;br /&gt;&amp;nbsp; 说明:该触发器实现了报表保存和删除时将之前的报表存储到cmobjversion表中，以达到版本保存的目的&lt;br /&gt;&amp;nbsp; */&lt;br /&gt;&amp;nbsp; if :old.spec is not null then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; case&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; when updating then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; insert into cmobjversion&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (reportpath, modifydate, spec, action)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; values&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (getcmobjpath(:old.cmid), sysdate, :old.spec, 'update');&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; when deleting then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; insert into cmobjversion&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (reportpath, modifydate, spec, action)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; values&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (getcmobjpath(:old.cmid), sysdate, :old.spec, 'delete');&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; end case; end if;&lt;br /&gt;end cmrep_tr;&lt;br /&gt;/&lt;br /&gt;执行上述脚本后，报表发生更新，或者删除时上一个报表定义会被存储到cmobjversion表的spec字段中。以前有个哥们就问过报表被误删除了，怎么还原。因为他没有做好备份，所以没办法恢复。&lt;br /&gt;恢复的步骤&lt;br /&gt;1.找到对应的报表定义，将其拷贝到ultraEdit里，另存为XML文件，注意编码要设为UTF8格式&lt;br /&gt;2.用reportstudio打开本地报表，保存&lt;br /&gt;脚本文件和演示的视频已经发到论坛里，有兴趣的可以到&lt;a href="http://www.cognoschina.net/club/thread-7582-1-1.html" target="_blank"&gt;http://www.cognoschina.net/club/thread-7582-1-1.html&lt;/a&gt;下载&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/interboy/aggbug/1835941.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/interboy/archive/2010/09/26/1835941.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/interboy/archive/2010/09/26/1835930.html</id><title type="text">Cognos重建CSK</title><summary type="text">Cognos配置过程中经常会遇到由于CSK配置的问题导致启动失败，我这里试了一下，不敢保证一定能把所有的问题都解决。先说一下我对CSK的理解ApplicationServer和cm通信的凭证，若Application Server配置的密码与CM配置的密码不一致，那么Application Server就没法注册到CM上。本地的配置文件cogstartup.xml存储的密码信息都是加密的，而密文是...</summary><published>2010-09-26T05:30:00Z</published><updated>2010-09-26T05:30:00Z</updated><author><name>冯东</name><uri>http://www.cnblogs.com/interboy/</uri></author><link rel="alternate" href="http://www.cnblogs.com/interboy/archive/2010/09/26/1835930.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/interboy/archive/2010/09/26/1835930.html"/><content type="html">&lt;div id="blog_article" class="article "&gt;&lt;div class="resizeimg"&gt;&lt;div class="resizeimg2"&gt;&lt;div class="resizeimg3"&gt;&lt;div class="resizeimg4"&gt;&lt;p&gt;Cognos配置过程中经常会遇到由于CSK配置的问题导致启动失败，我这里试了一下，不敢保证一定能把所有的问题都解决。&lt;br /&gt;先说一下我对CSK的理解&lt;br /&gt;ApplicationServer和cm通信的凭证，若Application Server配置的密码与CM配置的密码不一致，那么Application Server就没法注册到CM上。&lt;br /&gt;本地的配置文件cogstartup.xml存储的密码信息都是加密的，而密文是根据CSK的配置生成的。（具体怎么生成的还不清楚）。&lt;br /&gt;我在试验过程中更换jdk（1.6）没有重现那个问题。我觉得重建CSK应该是可以解决一些问题，可以通过删除文件夹或者删除Security-&amp;gt;cryptography-&amp;gt;Cognos(默认名称)来重建，两个没有区别，我这里演示通过删除文件夹来重建CSK。步骤如下&lt;br /&gt;将c8_location\configuration文件夹下的csk、encryptkeypair、signkeypair文件夹删除（新建一个文件夹，将他们挪过去）&lt;br /&gt;启动Cognos Configuration，点击保存按钮，此时报错，如下图&lt;/p&gt;&lt;p&gt;&lt;img src="http://www.cognoschina.net/home/attachment/201008/3/652_1280795157C3nz.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;[Validation]&lt;br /&gt;1. [ ERROR ] CAM-CRP-1064 Unable to process the PKCS #7 data because of an internal error. Unable to find an appropriate common symmetric key to decrypt the data.&lt;br /&gt;The parameter named 'Shared secret' located in 'Portal Services' is currently invalid.&lt;br /&gt;2. [ ERROR ] CAM-CRP-1064 Unable to process the PKCS #7 data because of an internal error. Unable to find an appropriate common symmetric key to decrypt the data.&lt;br /&gt;The parameter named 'Bind user DN and password' located in 'ldap' is currently invalid.&lt;br /&gt;3. [ ERROR ] CAM-CRP-1064 Unable to process the PKCS #7 data because of an internal error. Unable to find an appropriate common symmetric key to decrypt the data.&lt;br /&gt;The parameter named 'User ID and password' located in 'Content Store' is currently invalid.&lt;br /&gt;4. [ ERROR ] CAM-CRP-1064 Unable to process the PKCS #7 data because of an internal error. Unable to find an appropriate common symmetric key to decrypt the data.&lt;br /&gt;The parameter named 'Account and password' located in 'Notification' is currently invalid.&lt;/p&gt;&lt;p&gt;我们看这里面所提示的错误信息都是涉及到用户名和密码的部分，这是因为删除了CSK之后需要重新对这写信息进行加密，而以前的用户名密码是按照之前的csk加密存储的，所以必须重新配置一下这些密码。&lt;br /&gt;如日志提示我的配置当中有4个地方修要修改，不知道密码的属性点击编辑框然后直接点击OK按钮即可。&lt;br /&gt;Enviroment-&amp;gt; Portal Services下的Shared secret点击编辑框，直接点击OK&lt;br /&gt;Security -&amp;gt;Authentication-&amp;gt;ldap下的Bind user DN and password，点击编辑框，直接点击OK。&lt;br /&gt;Data Access-&amp;gt;Content Manager下的Content store配置的用户名密码，我们需要重新输入一遍&lt;br /&gt;Notification中的Account and password属性，点击编辑框，然后点击OK。&lt;br /&gt;然后点击保存，会出现&lt;br /&gt;下面的提示&lt;/p&gt;&lt;p&gt;&lt;img src="http://www.cognoschina.net/home/attachment/201008/3/652_1280795157cjSd.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;点击YES继续，会输出下面的错误信息。&lt;/p&gt;&lt;div class="uchome-message-pic"&gt;&lt;img src="http://www.cognoschina.net/home/attachment/201008/3/652_1280795158h9bg.jpg" alt="" /&gt; &lt;/div&gt;&lt;p&gt;不用担心，我们再次启动cognos这是在Generating cryptographic information时间会稍微长一点。然后就是正常的启动日志&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/interboy/aggbug/1835930.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/interboy/archive/2010/09/26/1835930.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/interboy/archive/2010/09/26/1835922.html</id><title type="text">JS屏蔽Cognos报表右键菜单</title><summary type="text">有些报表是不包含钻取功能，但是点击右键会弹出右键菜单，有些客户就比较反感这个。下面的这个方法可以屏蔽掉cognos报表的右键菜单在报表中增加一个HTML项，然后将下面的内容拷贝到里面&lt;script&gt;function getObjectName(){ return document.getElementById("cv.id").value;}function disableRightC...</summary><published>2010-09-26T05:23:00Z</published><updated>2010-09-26T05:23:00Z</updated><author><name>冯东</name><uri>http://www.cnblogs.com/interboy/</uri></author><link rel="alternate" href="http://www.cnblogs.com/interboy/archive/2010/09/26/1835922.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/interboy/archive/2010/09/26/1835922.html"/><content type="html">&lt;p&gt;有些报表是不包含钻取&lt;span class="t_tag"&gt;功能&lt;/span&gt;，但是点击右键会弹出右键菜单，有些客户就比较反感这个。下面的这个方法可以屏蔽掉&lt;span class="t_tag"&gt;cognos&lt;/span&gt;报表的右键菜单&lt;br /&gt;在报表中增加一个HTML项，然后将下面的内容拷贝到里面&lt;br /&gt;&amp;lt;script&amp;gt;&lt;br /&gt;function getObjectName()&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return document.getElementById("cv.id").value;&lt;br /&gt;}&lt;br /&gt;function disableRightClick()//禁用右键弹出菜单&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var objName = getObjectName();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; eval("oCV" + objName + ".bCanUseCognosViewerContextMenu = false;");&lt;br /&gt;}&lt;br /&gt;disableRightClick();&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;br /&gt;此方法在8.3和8.4两个版本上测试通过。&lt;/p&gt;&lt;img src="http://www.cnblogs.com/interboy/aggbug/1835922.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/interboy/archive/2010/09/26/1835922.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/interboy/archive/2010/04/10/1708751.html</id><title type="text">利用JS重写Cognos右键菜单</title><summary type="text">我写了一个利用JS禁用Cognos右键菜单，下面的JS可以实现重写Cognos的右键菜单。只要将下面的代码拷到一个HTML项里即可代码下面我来着介绍一下这段代码，前面的style和div主要是定义菜单的现实样式，其中引用样式为menuitems的div中有个clickcall属性，这个属性就是当点击此菜单项时调用的JS函数，可以将其改为自己的函数，我这里只是简单的调用了个alert。getObje...</summary><published>2010-04-09T23:20:00Z</published><updated>2010-04-09T23:20:00Z</updated><author><name>冯东</name><uri>http://www.cnblogs.com/interboy/</uri></author><link rel="alternate" href="http://www.cnblogs.com/interboy/archive/2010/04/10/1708751.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/interboy/archive/2010/04/10/1708751.html"/><content type="text">我写了一个利用JS禁用Cognos右键菜单，下面的JS可以实现重写Cognos的右键菜单。只要将下面的代码拷到一个HTML项里即可代码下面我来着介绍一下这段代码，前面的style和div主要是定义菜单的现实样式，其中引用样式为menuitems的div中有个clickcall属性，这个属性就是当点击此菜单项时调用的JS函数，可以将其改为自己的函数，我这里只是简单的调用了个alert。getObje...</content></entry><entry><id>http://www.cnblogs.com/interboy/archive/2009/12/23/1630886.html</id><title type="text">Cognos亲和力解释</title><summary type="text">从我刚接触Cognos就有一个名词一直弄不明白“亲和力”什么是亲和力？我曾经问过Cognos技术支持 ，他也没有个我很明确的答复，下面的内容是我根据一个文档翻译来的，肯定有很多地方时不到位的，希望各位多多指教。亲和力连接亲和力连接用来请求，它是报表服务进程（BIBusTKServerMain）一部分（可以理解为线程）。亲和力根据一个请求是否分配给特定的服务还是分布式环境...</summary><published>2009-12-23T12:03:00Z</published><updated>2009-12-23T12:03:00Z</updated><author><name>冯东</name><uri>http://www.cnblogs.com/interboy/</uri></author><link rel="alternate" href="http://www.cnblogs.com/interboy/archive/2009/12/23/1630886.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/interboy/archive/2009/12/23/1630886.html"/><content type="text">从我刚接触Cognos就有一个名词一直弄不明白“亲和力”什么是亲和力？我曾经问过Cognos技术支持 ，他也没有个我很明确的答复，下面的内容是我根据一个文档翻译来的，肯定有很多地方时不到位的，希望各位多多指教。亲和力连接亲和力连接用来请求，它是报表服务进程（BIBusTKServerMain）一部分（可以理解为线程）。亲和力根据一个请求是否分配给特定的服务还是分布式环境...</content></entry></feed>
