<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet href='http://feed.feedsky.com/styles/temp01.xsl' type='text/xsl' ?><!--这是一个由Feedsy提供技术支持的Feed，为了提高读者阅读的体验，以及满足用户美化自己Feed的需要，我们设计了多种精美的Feed模板，提供给大家选择，所有最终呈现出来的样式，皆由用户自愿选择使用，未经许可，任何团体和个人，请不要擅自修改样式或者盗用，这是对于用户选择权的尊重。--><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:fs="http://www.feedsky.com/namespace/feed" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><atom:link href="http://feed.feedsky.com/quiee" type="application/rss+xml" rel="self"></atom:link><fs:self_link href="http://feed.feedsky.com/quiee" type="application/rss+xml"></fs:self_link><lastBuildDate>Thu, 08 Mar 2012 23:20:53 GMT</lastBuildDate><title>快逸报表</title><description>免费、快速开发WEB报表的JAVA报表工具</description><link>http://www.quiee.com.cn</link><sy:updatePeriod>hourly</sy:updatePeriod><sy:updateFrequency>1</sy:updateFrequency><language>en</language><pubDate>Thu, 08 Mar 2012 23:20:53 GMT</pubDate><item><title>特征码异常总结</title><link>http://www.quiee.com.cn/archives/2659</link><content:encoded>&lt;p&gt;&lt;P&gt;&lt;FONT style=&quot;FONT-FAMILY: Courier New&quot;&gt;&lt;STRONG&gt;&lt;FONT style=&quot;COLOR: #ffffff&quot;&gt;&lt;FONT style=&quot;BACKGROUND-COLOR: #3366ff&quot;&gt;&lt;FONT style=&quot;COLOR: #ffffff; FONT-SIZE: 15pt&quot;&gt;第24章 特征码异常总结&lt;/FONT&gt; &lt;BR style=&quot;FONT-FAMILY: &quot;&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;FONT style=&quot;COLOR: #ff0000&quot;&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;br /&gt;
&lt;P&gt;&lt;FONT style=&quot;FONT-FAMILY: Courier New&quot;&gt;&lt;FONT style=&quot;COLOR: #ff0000&quot;&gt;1. 问题概述&lt;/FONT&gt; &lt;BR style=&quot;FONT-FAMILY: &quot;&gt;中国登记结算上海分公司生产系统读取特征码出现问题 &lt;BR style=&quot;FONT-FAMILY: &quot;&gt;操作系统:AIX 5.3.0.0 &lt;BR style=&quot;FONT-FAMILY: &quot;&gt;JDK版本: java version &amp;#8220;1.4.2&amp;#8243; Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2) Classic VM (build 1.4.2, J2RE 1.4.2 IBM AIX build ca142-20080515 (SR11) (JIT enabled: jitc)) &lt;BR style=&quot;FONT-FAMILY: &quot;&gt;使用root用户登录,执行命令的方式&lt;FONT style=&quot;COLOR: #ff0000&quot;&gt;java -classpath . GetRQCode BindCode&lt;/FONT&gt;, &lt;BR style=&quot;FONT-FAMILY: &quot;&gt;后台报错&lt;FONT style=&quot;COLOR: #0000ff&quot;&gt;java.lang.InternalError Can&amp;#8217;t connect to X11 window server using &amp;#8217;0.0&amp;#8242; as the value of the DISPLAY variable.&lt;/FONT&gt; &lt;BR style=&quot;FONT-FAMILY: &quot;&gt;&lt;IMG border=0 src=&quot;/wp-content/uploads/2012/03/3230799b-c293-48e2-8f2d-7d45874fbf39.jpg&quot;&gt;&lt;BR style=&quot;FONT-FAMILY: &quot;&gt;&lt;BR style=&quot;FONT-FAMILY: &quot;&gt;&lt;FONT style=&quot;COLOR: #ff0000&quot;&gt;2. 解决办法&lt;/FONT&gt; &lt;BR style=&quot;FONT-FAMILY: &quot;&gt;&lt;FONT style=&quot;COLOR: #3366ff&quot;&gt;A. 建议用bindcode.jsp的方式直接放在项目里访问即可,由于公司制度和流程,不允许在生产系统上这样做,避免产生漏洞和麻烦,客户要求我们用命令的方式. &lt;BR style=&quot;FONT-FAMILY: &quot;&gt;B. 这个问题在java中称为headless问题，是jdk1.3的bug，bug报告见http://developer.java.sun.com/developer/bugParade/bugs/4281163.html 。jdk1.4已经做了修正，文档见http://java.sun.com/j2se/1.4.1/docs/guide/awt/AWTChanges.html &lt;BR style=&quot;FONT-FAMILY: &quot;&gt;润乾公司对这个问题的理解：headless是指由于一些服务器（比如大型机）运行的环境比较特殊，不存在真实的设备去处理一些输入输出，比如显卡，键盘鼠标；这时就需要虚拟一些运行环境出来，或者就不要用到这些设备的相关操作（比如输入输出）。然而运行java.awt包又需要一个的图形环境，由此产生了异常。 &lt;BR style=&quot;FONT-FAMILY: &quot;&gt;C. 正确命令为:&lt;FONT style=&quot;COLOR: #ff0000&quot;&gt;java -classpath . GetRQCode BindCode Djava.awt.headless=true&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT style=&quot;COLOR: #ff0000&quot;&gt; &lt;BR style=&quot;FONT-FAMILY: &quot;&gt;&lt;/FONT&gt;&lt;FONT style=&quot;COLOR: #ff0000&quot;&gt;3. 问题总结&lt;/FONT&gt; &lt;BR style=&quot;FONT-FAMILY: &quot;&gt;&lt;FONT style=&quot;COLOR: #0000ff&quot;&gt;类型1： &lt;BR style=&quot;FONT-FAMILY: &quot;&gt;&lt;/FONT&gt;在linux上在画图和chart时好多人会碰到 Can&amp;#8217;t connect to X11 window server using &amp;#8216;:0.0&amp;#8242; as the value of the DISPLAY variable. &lt;BR style=&quot;FONT-FAMILY: &quot;&gt;原因：&lt;FONT style=&quot;COLOR: #339966&quot;&gt;因为用到了图形处理，java程序会去寻找linux上的图形界面是否启动&lt;/FONT&gt; &lt;BR style=&quot;FONT-FAMILY: &quot;&gt;解决：&lt;FONT style=&quot;COLOR: #339966&quot;&gt;不让java寻找linux图形界面即可，在java 启动时加选项&lt;/FONT&gt;&lt;FONT style=&quot;COLOR: #ff0000&quot;&gt;java &amp;#8211; &lt;BR style=&quot;FONT-FAMILY: &quot;&gt;Djava.awt.headless=true &lt;BR style=&quot;FONT-FAMILY: &quot;&gt;&lt;/FONT&gt;实现：如果是tomcat，在&lt;FONT style=&quot;COLOR: #3366ff&quot;&gt;/usr/local/tomcat/bin/catalina.sh&lt;/FONT&gt;中修改为 &lt;BR style=&quot;FONT-FAMILY: &quot;&gt;JAVA_OPTS=-Djava.awt.headless=true &lt;BR style=&quot;FONT-FAMILY: &quot;&gt;echo &amp;#8220;Using CATALINA_BASE: $CATALINA_BASE&amp;#8221; &lt;BR style=&quot;FONT-FAMILY: &quot;&gt;echo &amp;#8220;Using CATALINA_HOME: $CATALINA_HOME&amp;#8221; &lt;BR style=&quot;FONT-FAMILY: &quot;&gt;echo &amp;#8220;Using CATALINA_TMPDIR: $CATALINA_TMPDIR&amp;#8221; &lt;BR style=&quot;FONT-FAMILY: &quot;&gt;echo &amp;#8220;Using RUNJAVA: $_RUNJAVA&amp;#8221; &lt;BR style=&quot;FONT-FAMILY: &quot;&gt;echo &amp;#8220;Using JAVA_OPTS: $JAVA_OPTS&amp;#8221; &lt;BR style=&quot;FONT-FAMILY: &quot;&gt;java将不需检测，问题自然解决 &lt;BR style=&quot;FONT-FAMILY: &quot;&gt;&lt;BR style=&quot;FONT-FAMILY: &quot;&gt;&lt;FONT style=&quot;COLOR: #0000ff&quot;&gt;类型2：&lt;/FONT&gt; &lt;BR style=&quot;FONT-FAMILY: &quot;&gt;润乾报表4.0版,操作系统：windows &lt;BR style=&quot;FONT-FAMILY: &quot;&gt;应用服务器是：OC4J,数据库：oracle &lt;BR style=&quot;FONT-FAMILY: &quot;&gt;错误信息：&lt;FONT style=&quot;COLOR: #0000ff&quot;&gt;客户的授权文件放到服务器上，报负数特征码的错误，服务器特征码-99999476与License文件中授权的特征码23573554不一致！&lt;/FONT&gt; &lt;BR style=&quot;FONT-FAMILY: &quot;&gt;解决办法：&lt;FONT style=&quot;COLOR: #0000ff&quot;&gt;oracleAS服务器出现这种情况的原因是获取特征码的程序找不到windows的环境变量windir了，所以找不到windows的安装目录&lt;/FONT&gt;，修改方法如下： &lt;BR style=&quot;FONT-FAMILY: &quot;&gt;3.5中加在web.xml中的DataServlet的初始参数中，如下 &lt;BR style=&quot;FONT-FAMILY: &quot;&gt;&lt;FONT style=&quot;COLOR: #800000&quot;&gt;&amp;lt;init-param&amp;gt; &lt;BR style=&quot;FONT-FAMILY: &quot;&gt;&amp;lt;param-name&amp;gt;windir&amp;lt;/param-name&amp;gt; &lt;BR style=&quot;FONT-FAMILY: &quot;&gt;&amp;lt;param-value&amp;gt;c:\windows&amp;lt;/param-value&amp;gt; &lt;BR style=&quot;FONT-FAMILY: &quot;&gt;&amp;lt;/init-param&amp;gt; &lt;BR style=&quot;FONT-FAMILY: &quot;&gt;4.0中加在reportConfig.xml中，如下 &lt;BR style=&quot;FONT-FAMILY: &quot;&gt;&amp;lt;config&amp;gt; &lt;BR style=&quot;FONT-FAMILY: &quot;&gt;&amp;lt;name&amp;gt;windir&amp;lt;/name&amp;gt; &lt;BR style=&quot;FONT-FAMILY: &quot;&gt;&amp;lt;value&amp;gt;c:\windows&amp;lt;/value&amp;gt; &lt;BR style=&quot;FONT-FAMILY: &quot;&gt;&amp;lt;/config&amp;gt;&lt;/FONT&gt; &lt;BR style=&quot;FONT-FAMILY: &quot;&gt;&lt;FONT style=&quot;COLOR: #0000ff&quot;&gt;类型3：&lt;/FONT&gt; &lt;BR style=&quot;FONT-FAMILY: &quot;&gt;有关润乾报表获取机器码的程序在SUN Solaris操作系统的虚机上的运行问题： &lt;BR style=&quot;FONT-FAMILY: &quot;&gt;背景：一台SUN的T系列服务器，安装SUN Solaris操作系统，其物理机被划分成了多个虚 &lt;BR style=&quot;FONT-FAMILY: &quot;&gt;拟机,每个虚拟机至少有两个IP地址； &lt;BR style=&quot;FONT-FAMILY: &quot;&gt;1.在其中一个虚拟机上,以root身份运行获取机器码的程序,得到以下结果： &lt;BR style=&quot;FONT-FAMILY: &quot;&gt;&lt;FONT style=&quot;COLOR: #0000ff&quot;&gt;[root@ywverapp:/bea/getMachineCode]#java -classpath . GetRQCode BindCode &lt;BR style=&quot;FONT-FAMILY: &quot;&gt;[2009-07-02 11:16:24] : [INFO ] &amp;#8211; Calculation start,first get data from &lt;BR style=&quot;FONT-FAMILY: &quot;&gt;source&amp;#8230;&amp;#8230; &lt;BR style=&quot;FONT-FAMILY: &quot;&gt;[2009-07-02 11:16:24] : [INFO ] &amp;#8211; Calculating report&amp;#8230; &lt;BR style=&quot;FONT-FAMILY: &quot;&gt;[2009-07-02 11:16:26] : [INFO ] &amp;#8211; Calculation complete! &lt;BR style=&quot;FONT-FAMILY: &quot;&gt;Cannot get the computer code, maybe has no right, please login using root.&lt;/FONT&gt; &lt;BR style=&quot;FONT-FAMILY: &quot;&gt;2.在物理机上，以root身份运行该程序，可以获得机器码； &lt;BR style=&quot;FONT-FAMILY: &quot;&gt;3.在物理机上运行过以后，再到虚拟机上就可以正确执行，并且能运算出和物理机上一致的机器码； &lt;BR style=&quot;FONT-FAMILY: &quot;&gt;以上现象的原因是什么，这样获得的机器码是否可用？将来的报表应用是需要在虚拟机上部署，物理机上不会运行任何系统。 &lt;BR style=&quot;FONT-FAMILY: &quot;&gt;&lt;FONT style=&quot;COLOR: #ff0000&quot;&gt;解决办法：&lt;/FONT&gt; &lt;BR style=&quot;FONT-FAMILY: &quot;&gt;测试： &lt;BR style=&quot;FONT-FAMILY: &quot;&gt;1 物理机与虚拟机是否都是共享系统/usr、/etc等目录 &lt;BR style=&quot;FONT-FAMILY: &quot;&gt;2 在虚拟机里/etc目录是否有写文件的权限（用java小程序测试，不是直接手动建文件，附件中是在windows写测试小程序的java例子） &lt;BR style=&quot;FONT-FAMILY: &quot;&gt;3 在此物理机上的另一个虚拟机上再获取一次特征码 &lt;BR style=&quot;FONT-FAMILY: &quot;&gt;分析： &lt;BR style=&quot;FONT-FAMILY: &quot;&gt;1 测试方法中的1，2都可以测试通过，则物理机与虚拟机都是共享系统/usr、/etc等目录，而虚拟机没有在/etc目录下写报表的配置文件的权限，所以，第一步在虚拟机上获取特征码，就报没有权限的错； &lt;BR style=&quot;FONT-FAMILY: &quot;&gt;2 由于第二步在物理机上获取到了特征码，所以在/etc目录下有报表的配置文件了，第三步再 &lt;BR style=&quot;FONT-FAMILY: &quot;&gt;去虚拟机上获取特征码就能获取到了； &lt;BR style=&quot;FONT-FAMILY: &quot;&gt;3 测试方法中的第3点，如果获取到的特征码与物理机上的也是一致的话，则物理机上的特征码可以用到这个物理机上的其他虚拟机上 &lt;/P&gt;&lt;/FONT&gt;&lt;br /&gt;
&lt;!-- keywords:报表设计,报表制作,Java报表,报表工具,web报表 --&gt;&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/614802919/quiee/feedsky/s.gif?r=http://www.quiee.com.cn/archives/2659&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</content:encoded><wfw:commentRss>http://www.quiee.com.cn/archives/2659/feed</wfw:commentRss><slash:comments>0</slash:comments><description>特征码异常总...&lt;img src=&quot;http://www1.feedsky.com/t1/614802919/quiee/feedsky/s.gif?r=http://www.quiee.com.cn/archives/2659&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>设计基础</category><pubDate>Fri, 09 Mar 2012 07:20:53 +0800</pubDate><author>ROS</author><comments>http://www.quiee.com.cn/archives/2659#comments</comments><guid isPermaLink="false">http://www.quiee.com.cn/archives/2659</guid><dc:creator>ROS</dc:creator><fs:srclink>http://www.quiee.com.cn/archives/2659</fs:srclink><fs:srcfeed>http://www.quiee.com.cn/feed</fs:srcfeed><fs:itemid>feedsky/quiee/~7132717/614802919/5241428</fs:itemid></item><item><title>授权问题与解决办法汇总（三）</title><link>http://www.quiee.com.cn/archives/2657</link><content:encoded>&lt;p&gt;&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 宋体&quot;&gt;我们曾经总结过一些关于授权的问题，今天我们来看一下绑定&lt;/SPAN&gt;&lt;SPAN&gt;ip&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 宋体&quot;&gt;授权的问题。&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;H2&gt;&lt;SPAN style=&quot;FONT-FAMILY: 宋体&quot;&gt;问题描述&lt;/SPAN&gt;&lt;/H2&gt;&lt;br /&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 宋体&quot;&gt;某客户的集群环境中使用了绑定&lt;/SPAN&gt;&lt;SPAN&gt;ip&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 宋体&quot;&gt;的授权，其中一台&lt;/SPAN&gt;&lt;SPAN&gt;59&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 宋体&quot;&gt;的机器出现问题，提示：&lt;SPAN style=&quot;COLOR: red&quot;&gt;服务器&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: red&quot;&gt;IP&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 宋体; COLOR: red&quot;&gt;地址&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: red&quot;&gt;127.0.0.1&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 宋体; COLOR: red&quot;&gt;与&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: red&quot;&gt;License&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 宋体; COLOR: red&quot;&gt;文件中授权的&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: red&quot;&gt;IP&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 宋体; COLOR: red&quot;&gt;地址不符！&lt;/SPAN&gt; &lt;/P&gt;&lt;br /&gt;
&lt;P style=&quot;TEXT-INDENT: 21pt&quot; class=MsoNormal&gt;&lt;SPAN style=&quot;FONT-FAMILY: 宋体&quot;&gt;集群环境中除&lt;/SPAN&gt;&lt;SPAN&gt;59&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 宋体&quot;&gt;机器，其他正常，客户服务器均为&lt;/SPAN&gt;&lt;SPAN&gt;unix&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 宋体&quot;&gt;系统。&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;P style=&quot;TEXT-INDENT: 21pt&quot; class=MsoNormal&gt;&lt;SPAN style=&quot;FONT-FAMILY: 宋体&quot;&gt;授权信息：&lt;/SPAN&gt;&lt;SPAN&gt;IP= 10.48.**.61;10.48.**.59;10.48.**.53;10.48.**.4&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;H2&gt;&lt;SPAN style=&quot;FONT-FAMILY: 宋体&quot;&gt;问题分析&lt;/SPAN&gt;&lt;/H2&gt;&lt;br /&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 宋体&quot;&gt;导致这个问题的原因可能有两方面：&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;P style=&quot;TEXT-INDENT: 21pt&quot; class=MsoNormal&gt;&lt;SPAN style=&quot;FONT-FAMILY: 宋体&quot;&gt;一是授权本身制作有问题，比如&lt;/SPAN&gt;&lt;SPAN&gt;ip&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 宋体&quot;&gt;绑定错误或&lt;/SPAN&gt;&lt;SPAN&gt;ip&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 宋体&quot;&gt;输入不规范。通过查看和客户确认和查看授权信息基本上排除了这两种可能；&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;P style=&quot;TEXT-INDENT: 21pt&quot; class=MsoNormal&gt;&lt;SPAN style=&quot;FONT-FAMILY: 宋体&quot;&gt;二是客户这台&lt;/SPAN&gt;&lt;SPAN&gt;59&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 宋体&quot;&gt;的机器和其他的不同，主要可能硬件如网卡不尽相同。这需要通过程序获取一下本机&lt;/SPAN&gt;&lt;SPAN&gt;ip&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 宋体&quot;&gt;来做测试。&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;H2&gt;&lt;SPAN style=&quot;FONT-FAMILY: 宋体&quot;&gt;解决方法&lt;/SPAN&gt;&lt;/H2&gt;&lt;br /&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 宋体&quot;&gt;我们使用润乾匹配授权时获取&lt;/SPAN&gt;&lt;SPAN&gt;ip&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 宋体&quot;&gt;的方法，在&lt;/SPAN&gt;&lt;SPAN&gt;59&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 宋体&quot;&gt;本机获取一下当前&lt;/SPAN&gt;&lt;SPAN&gt;ip&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 宋体&quot;&gt;。&lt;/SPAN&gt;&lt;SPAN&gt;java.net.InetAddress.getLocalHost().getHostAddress()&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 宋体&quot;&gt;，经反馈得知，结果为&lt;/SPAN&gt;&lt;SPAN&gt;127.0.0.1&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 宋体&quot;&gt;，所以我们确认问题出在客户机上。&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 宋体&quot;&gt;让客户进行了如下操作：&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;P style=&quot;TEXT-INDENT: 21pt&quot; class=MsoNormal&gt;&lt;SPAN style=&quot;FONT-FAMILY: 宋体&quot;&gt;查看&lt;/SPAN&gt;&lt;SPAN&gt; /etc/hosts&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 宋体&quot;&gt;文件，里面有一条本机名和&lt;/SPAN&gt;&lt;SPAN&gt; 222.xxx.xxx.xx&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 宋体&quot;&gt;这个&lt;/SPAN&gt;&lt;SPAN&gt; IP &lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 宋体&quot;&gt;对应的记录。把它注释掉，然后修改本机的主机名，又在&lt;/SPAN&gt;&lt;SPAN&gt; hosts&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 宋体&quot;&gt;文件中加入主机名和&lt;/SPAN&gt;&lt;SPAN&gt;222. xx.xx.xx&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 宋体&quot;&gt;的对应，问题解决了。&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;H2&gt;&lt;SPAN style=&quot;FONT-FAMILY: 宋体&quot;&gt;总结&lt;/SPAN&gt;&lt;/H2&gt;&lt;br /&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 宋体&quot;&gt;通过问题的解决方法，我们可以发现&lt;/SPAN&gt;&lt;SPAN&gt;InetAddress.getLocalHost().getHostAddress()&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 宋体&quot;&gt;方法找到本机&lt;/SPAN&gt;&lt;SPAN&gt; IP&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 宋体&quot;&gt;的实现方法——依靠本机的机器名去查询&lt;/SPAN&gt;&lt;SPAN&gt;IP &lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 宋体&quot;&gt;地址，和&lt;/SPAN&gt;&lt;SPAN&gt; ping `hostname` &lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 宋体&quot;&gt;返回的&lt;/SPAN&gt;&lt;SPAN&gt; IP&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 宋体&quot;&gt;地址是同一个，并不是&lt;/SPAN&gt;&lt;SPAN&gt; ipconfig &lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 宋体&quot;&gt;方法得到的&lt;/SPAN&gt;&lt;SPAN&gt; eth0 IP &lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 宋体&quot;&gt;地址。&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;P style=&quot;TEXT-INDENT: 21pt&quot; class=MsoNormal&gt;&lt;SPAN style=&quot;FONT-FAMILY: 宋体&quot;&gt;在&lt;/SPAN&gt;&lt;SPAN&gt;windows&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 宋体&quot;&gt;中&lt;/SPAN&gt;&lt;SPAN&gt;InetAddress.getLocalHost().getHostAddress()&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 宋体&quot;&gt;获得的值可能是在&lt;/SPAN&gt;&lt;SPAN&gt;/system32/drivers/etc/host&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 宋体&quot;&gt;文件中的值&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;!-- keywords:报表设计,报表制作,Java报表,报表工具,web报表 --&gt;&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/614700379/quiee/feedsky/s.gif?r=http://www.quiee.com.cn/archives/2657&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</content:encoded><wfw:commentRss>http://www.quiee.com.cn/archives/2657/feed</wfw:commentRss><slash:comments>0</slash:comments><description>3...&lt;img src=&quot;http://www1.feedsky.com/t1/614700379/quiee/feedsky/s.gif?r=http://www.quiee.com.cn/archives/2657&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>设计基础</category><pubDate>Fri, 09 Mar 2012 03:47:13 +0800</pubDate><author>ROS</author><comments>http://www.quiee.com.cn/archives/2657#comments</comments><guid isPermaLink="false">http://www.quiee.com.cn/archives/2657</guid><dc:creator>ROS</dc:creator><fs:srclink>http://www.quiee.com.cn/archives/2657</fs:srclink><fs:srcfeed>http://www.quiee.com.cn/feed</fs:srcfeed><fs:itemid>feedsky/quiee/~7132717/614700379/5241428</fs:itemid></item><item><title>重复值列的两种计算排名方法</title><link>http://www.quiee.com.cn/archives/2638</link><content:encoded>&lt;p class=&quot;MsoNormal&quot;&gt;&lt;strong&gt;&lt;span&gt;需求背景：&lt;/span&gt;&lt;/strong&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span&gt;对可扩展的单元格的值计算排名，可利用快逸提供的单元格集运算函数和&lt;/span&gt;&lt;span&gt;$&lt;/span&gt;&lt;span&gt;运算符实现。比如对扩展格&lt;/span&gt;&lt;span&gt;A1&lt;/span&gt;&lt;span&gt;格排序，可通过表达式&lt;/span&gt;&lt;span&gt;=count(A2[`0]{A2&amp;gt;$A2})+1&lt;/span&gt;&lt;span&gt;实现，即统计所有&lt;/span&gt;&lt;span&gt;A1&lt;/span&gt;&lt;span&gt;单元格值大于当前&lt;/span&gt;&lt;span&gt;A1&lt;/span&gt;&lt;span&gt;单元格值的单元格个数，然后加一，从而实现对&lt;/span&gt;&lt;span&gt;A1&lt;/span&gt;&lt;span&gt;单元格值排名的效果。&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span&gt;实现效果如下：&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span&gt;&lt;img src=&quot;/wp-content/uploads/2011/09/6287888c-7743-4863-80f2-77e6c8397ba6.jpg&quot; alt=&quot;&quot; width=&quot;147&quot; height=&quot;233&quot; /&gt;&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span&gt;如果&lt;/span&gt;&lt;span&gt;A1&lt;/span&gt;&lt;span&gt;单元格值中存在重复值，用上面的方式就会得到如下结果：对重复值项排名会相同，后续的数据项的排名会不连续。&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span&gt;&lt;img src=&quot;/wp-content/uploads/2011/09/bfa38922-90c3-4516-8494-724a6fe9d6d4.jpg&quot; alt=&quot;&quot; width=&quot;146&quot; height=&quot;237&quot; /&gt;&lt;/span&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span&gt;本文介绍其他的两种排序方法：&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoListParagraph&quot; style=&quot;text-indent: -18pt; margin-left: 18pt;&quot;&gt;&lt;span&gt;&lt;span&gt;1.&lt;span style=&quot;font: 7pt 'Times New Roman';&quot;&gt;       &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;重复值的单元格按行号递增排序，比如上例中值为&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;的单元格就应该由上到下排序&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;和&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;。&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoListParagraph&quot; style=&quot;text-indent: -18pt; margin-left: 18pt;&quot;&gt;&lt;span&gt;&lt;span&gt;2.&lt;span style=&quot;font: 7pt 'Times New Roman';&quot;&gt;       &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;重复值的单元格排名相同，后续的数据项排名保持连续递增。比如上例中值为&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;的两个单元格的排名均为&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;，值为&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;的两个单元格排名为&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;而不是&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;。&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;  &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;strong&gt;&lt;span&gt;排序方式一实现：&lt;/span&gt;&lt;/strong&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;strong&gt;&lt;span&gt; &lt;/span&gt;&lt;/strong&gt;  &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span&gt;报表模板设计如下：&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span&gt;&lt;img src=&quot;/wp-content/uploads/2011/09/1a821be5-34eb-46d1-8f60-ff0d45b65cb6.jpg&quot; alt=&quot;&quot; width=&quot;343&quot; height=&quot;85&quot; /&gt;&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span&gt;A2&lt;/span&gt;&lt;span&gt;为待排序单元格，其中为模拟的含有重复值的一组数据。表达式：&lt;/span&gt;&lt;span&gt;=list(1,5,5,5,6,6,8,8,9)&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span&gt;B2&lt;/span&gt;&lt;span&gt;表达式：&lt;/span&gt;&lt;span&gt;=count(A2[`0]{A2&amp;gt;$A2})+1&lt;/span&gt;&lt;span&gt;，统计所有&lt;/span&gt;&lt;span&gt;A1&lt;/span&gt;&lt;span&gt;单元格值大于当前&lt;/span&gt;&lt;span&gt;A1&lt;/span&gt;&lt;span&gt;单元格值的单元格个数。&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span&gt;C2&lt;/span&gt;&lt;span&gt;表达式：&lt;/span&gt;&lt;span&gt;=row()&lt;/span&gt;&lt;span&gt;，取得当前单元格所在行的行号。&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span&gt;D2&lt;/span&gt;&lt;span&gt;表达式：&lt;/span&gt;&lt;span&gt;=B2+count(A2[`0]{B2==$B2&amp;amp;&amp;amp;C2&amp;lt;$C2}),&lt;/span&gt;&lt;span&gt;其中&lt;/span&gt;&lt;span&gt;count(A2[`0]{B2==$B2&amp;amp;&amp;amp;C2&amp;lt;$C2})&lt;/span&gt;&lt;span&gt;统计和当前&lt;/span&gt;&lt;span&gt;B2&lt;/span&gt;&lt;span&gt;单元格值（排名）相同且行号小于当前行的&lt;/span&gt;&lt;span&gt;A2&lt;/span&gt;&lt;span&gt;单元格数。那么&lt;/span&gt;&lt;span&gt;D2&lt;/span&gt;&lt;span&gt;表示用初始计算得到的排名加上比自己行号小且值重复的单元格数。&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span&gt;最终效果：&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span&gt;&lt;img src=&quot;/wp-content/uploads/2011/09/86ed191f-5a19-4db1-b3c0-469501376540.jpg&quot; alt=&quot;&quot; width=&quot;301&quot; height=&quot;246&quot; /&gt;&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span&gt;黄色区域为待排序列和最终不重复递增排序结果。可根据具体情况隐藏中间两列。&lt;/span&gt; &lt;/p&gt;
&lt;p&gt; &lt;br /&gt;
 &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;strong&gt;&lt;span&gt;排序方式二实现：&lt;/span&gt;&lt;/strong&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;strong&gt;&lt;span&gt;实现思路：&lt;/span&gt;&lt;/strong&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span&gt;用自定义函数实现统计值不同的单元格集的单元格数目。再利用该自定义函数统计满足小于当前格值的不重复单元格数，然后加一，从而实现对&lt;/span&gt;&lt;span&gt;A1&lt;/span&gt;&lt;span&gt;单元格值排名的效果。&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;strong&gt;&lt;span&gt;具体实现：&lt;/span&gt;&lt;/strong&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span&gt;1.&lt;/span&gt;&lt;span&gt;自定义函数：&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span&gt;润乾提供了自定义函数，继承&lt;/span&gt;&lt;span&gt;function&lt;/span&gt;&lt;span&gt;类或者&lt;/span&gt;&lt;span&gt;DSFunction&lt;/span&gt;&lt;span&gt;类，实现其中的&lt;/span&gt;&lt;span&gt;calculate&lt;/span&gt;&lt;span&gt;方法，并返回运算结果。如果在模板中使用自定义函数还需进行函数登记，在&lt;/span&gt;&lt;span&gt;java&lt;/span&gt;&lt;span&gt;的类路径的&lt;/span&gt;&lt;span&gt;config&lt;/span&gt;&lt;span&gt;目录下，找到&lt;/span&gt;&lt;span&gt;customFunctions.properties&lt;/span&gt;&lt;span&gt;文件，并在其中进行自定义函数类及函数名的登记。&lt;/span&gt; &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div class=&quot;MsoListParagraph&quot; style=&quot;text-indent: -21pt; margin-left: 21pt;&quot;&gt;&lt;span&gt;自定义函数类实现：&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span&gt;public class count2 extends Function {&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span&gt;&lt;span&gt;         &lt;/span&gt;public Object calculate(Context arg0, boolean arg1) {&lt;span&gt;    &lt;/span&gt;&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span&gt;&lt;span&gt;         &lt;/span&gt;&lt;span&gt;    &lt;/span&gt;//&lt;/span&gt;&lt;span&gt;报表中调用该函数传递过来的参数列表&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span&gt;&lt;span&gt;                   &lt;/span&gt;if ( this.paramList.size() == 0 ) {&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span&gt;&lt;span&gt;                            &lt;/span&gt;throw new ReportError( &amp;#8220;count2&lt;/span&gt;&lt;span&gt;函数参数列表为空&lt;/span&gt;&lt;span&gt;&amp;#8221; );&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span&gt;&lt;span&gt;                   &lt;/span&gt;}&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span&gt;&lt;span&gt;                   &lt;/span&gt;//&lt;/span&gt;&lt;span&gt;取得计算表达式（得到传递给报表的参数）&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span&gt;&lt;span&gt;                   &lt;/span&gt;Expression param1 = ( Expression )this.paramList.get( 0 );&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span&gt;&lt;span&gt;                   &lt;/span&gt;if ( param1 == null ) {&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span&gt;&lt;span&gt;                            &lt;/span&gt;throw new ReportError( &amp;#8220;count2&lt;/span&gt;&lt;span&gt;函数出现无效参数&lt;/span&gt;&lt;span&gt;&amp;#8221; );&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span&gt;&lt;span&gt;                   &lt;/span&gt;}&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span&gt;&lt;span&gt;                   &lt;/span&gt;&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span&gt;&lt;span&gt;                   &lt;/span&gt;//==================================================================&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span&gt;&lt;span&gt;                   &lt;/span&gt;//&lt;/span&gt;&lt;span&gt;运算表达式&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;并取得运算结果&lt;/span&gt;&lt;span&gt;(Object)&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span&gt;&lt;span&gt;                   &lt;/span&gt;Object result1 = Variant2.getValue( param1.calculate(arg0,arg1),false,false );&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;if( result1==null ) return ObjectCache.getInteger( 0 );&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span&gt;&lt;span&gt;                   &lt;/span&gt;if ( result1 instanceof List ) {&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span&gt;&lt;span&gt;                            &lt;/span&gt;//&lt;/span&gt;&lt;span&gt;如结果为&lt;/span&gt;&lt;span&gt;List,&lt;/span&gt;&lt;span&gt;求得&lt;/span&gt;&lt;span&gt;List&lt;/span&gt;&lt;span&gt;中保存不同对象的个数&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span&gt;&lt;span&gt;                            &lt;/span&gt;List list = ( List ) result1;&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span&gt;&lt;span&gt;                            &lt;/span&gt;Hashtable ht = new Hashtable();&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span&gt;&lt;span&gt;                            &lt;/span&gt;Iterator it = list.iterator();&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span&gt;&lt;span&gt;                            &lt;/span&gt;for(;it.hasNext();){&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span&gt;&lt;span&gt;                                     &lt;/span&gt;ht.put(it.next(),&amp;#8221;&quot;);&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span&gt;&lt;span&gt;                            &lt;/span&gt;}&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span&gt;&lt;span&gt;                            &lt;/span&gt;//&lt;/span&gt;&lt;span&gt;返回实际的不同值中的人数&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span&gt;&lt;span&gt;                            &lt;/span&gt;return ObjectCache.getInteger( ht.size() );&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span&gt;&lt;span&gt;                   &lt;/span&gt;}&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;return ObjectCache.getInteger( 1 );&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;//===================================================================&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span&gt;&lt;span&gt;         &lt;/span&gt;}&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span&gt;}&lt;/span&gt; &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div class=&quot;MsoListParagraph&quot; style=&quot;text-indent: -21pt; margin-left: 21pt;&quot;&gt;&lt;span&gt;自定义函数登记：&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span&gt;    将编译好的类文件&lt;/span&gt;&lt;span&gt;(.class)&lt;/span&gt;&lt;span&gt;分别拷贝到&lt;/span&gt;&lt;span&gt;java&lt;/span&gt;&lt;span&gt;类路径下&lt;/span&gt;&lt;span&gt;(\&lt;/span&gt;&lt;span&gt;报表安装路径&lt;/span&gt;&lt;span&gt;\ \webappsdemo\WEB-INF\classes\&lt;/span&gt;&lt;span&gt;和&lt;/span&gt;&lt;span&gt;\&lt;/span&gt;&lt;span&gt;报表安装路径&lt;/span&gt;&lt;span&gt;\designer\web\WEB-INF\classes\,&lt;/span&gt;&lt;span&gt;前者为服务器端，后者为设计器端&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;，分别进行服务器端和设计器端自定义函数登记，在&lt;/span&gt;&lt;span&gt;java&lt;/span&gt;&lt;span&gt;的类路径的&lt;/span&gt;&lt;span&gt;config&lt;/span&gt;&lt;span&gt;目录下，找到&lt;/span&gt;&lt;span&gt;customFunctions.properties&lt;/span&gt;&lt;span&gt;文件（服务器端&lt;/span&gt;&lt;span&gt;: \webapps\demo\WEB-INF\classes\config\customFunctions.properties;&lt;/span&gt;&lt;span&gt;设计器端：&lt;/span&gt;&lt;span&gt;\designer\web\WEB-INF\classes\config\customFunctions.properties&lt;/span&gt;&lt;span&gt;）&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;登记如下：&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin-left: 21pt;&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;span&gt;用户自定义函数在此添加&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin-left: 21pt;&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;span&gt;格式：&lt;/span&gt; &lt;span&gt;函数名&lt;/span&gt;&lt;span&gt; = &lt;/span&gt;&lt;span&gt;函数类型（&lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;：普通函数，&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;：数据集函数）&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;类名称&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin-left: 21pt;&quot;&gt;&lt;span&gt;count2=0,com.count2&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span&gt;2.&lt;/span&gt;&lt;span&gt;报表模板设计：&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoListParagraph&quot; style=&quot;text-indent: 0cm; margin-left: 18pt;&quot;&gt;&lt;span&gt;&lt;img src=&quot;/wp-content/uploads/2011/09/ace03c22-ba69-4747-8ec0-602621294e70.jpg&quot; alt=&quot;&quot; width=&quot;188&quot; height=&quot;90&quot; /&gt;&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span&gt;A2&lt;/span&gt;&lt;span&gt;为待排序单元格，其中为模拟的含有重复值的一组数据。表达式：&lt;/span&gt;&lt;span&gt;=list(1,5,5,5,6,6,8,8,9)&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span&gt;B2&lt;/span&gt;&lt;span&gt;表达式：&lt;/span&gt;&lt;span&gt;=count2(A2[`0]{A2&amp;gt;$A2})+1&lt;/span&gt;&lt;span&gt;，统计所有&lt;/span&gt;&lt;span&gt;A1&lt;/span&gt;&lt;span&gt;单元格值大于当前&lt;/span&gt;&lt;span&gt;A1&lt;/span&gt;&lt;span&gt;单元格值且单元格值不重复的&lt;/span&gt;&lt;span&gt;A2&lt;/span&gt;&lt;span&gt;单元格个数。&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;strong&gt;&lt;span&gt;最终效果：&lt;/span&gt;&lt;/strong&gt; &lt;/p&gt;
&lt;p class=&quot;MsoListParagraph&quot; style=&quot;text-indent: 0cm; margin-left: 18pt;&quot;&gt;&lt;span&gt;&lt;img src=&quot;/wp-content/uploads/2011/09/24ce0993-b5cc-4cee-9a8d-ff872c7121e2.jpg&quot; alt=&quot;&quot; width=&quot;147&quot; height=&quot;256&quot; /&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt; &lt;/p&gt;
&lt;p&gt; &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
&lt;!-- keywords:报表设计,报表制作,Java报表,报表工具,web报表,排名,单元格的值,扩展 --&gt;&lt;/p&gt;
&lt;p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;/span&gt;&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/614700380/quiee/feedsky/s.gif?r=http://www.quiee.com.cn/archives/2638&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</content:encoded><wfw:commentRss>http://www.quiee.com.cn/archives/2638/feed</wfw:commentRss><slash:comments>0</slash:comments><description>介绍重复值列的两种计算排名方...&lt;img src=&quot;http://www1.feedsky.com/t1/614700380/quiee/feedsky/s.gif?r=http://www.quiee.com.cn/archives/2638&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>排名</category><category>设计基础</category><category>单元格的值</category><category>扩展符</category><pubDate>Wed, 07 Sep 2011 14:36:09 +0800</pubDate><author>ROS</author><comments>http://www.quiee.com.cn/archives/2638#comments</comments><guid isPermaLink="false">http://www.quiee.com.cn/archives/2638</guid><dc:creator>ROS</dc:creator><fs:srclink>http://www.quiee.com.cn/archives/2638</fs:srclink><fs:srcfeed>http://www.quiee.com.cn/feed</fs:srcfeed><fs:itemid>feedsky/quiee/~7132717/614700380/5241428</fs:itemid></item><item><title>复选框方框图片导出</title><link>http://www.quiee.com.cn/archives/2628</link><content:encoded>&lt;p class=&quot;MsoNormal&quot;&gt;&lt;a name=&quot;OLE_LINK2&quot;&gt;&lt;/a&gt;&lt;a name=&quot;OLE_LINK1&quot;&gt;&lt;span&gt;&lt;span&gt;需求背景：&lt;/span&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;客户的需求是打印出复选框的带勾的方框图而且无需修改，但我们报表打印&lt;/span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;目前对复选框的打印在打印预览的情况下是显示为一对中括号里面打钩那种。由于客户的复选方框图是由数据库字段确定的，无需要更改。因此，我们可以利用图片打印来替代下复选框的打印的效果。&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;   &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;步骤：&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoListParagraph&quot; style=&quot;text-indent: -18pt; margin-left: 18pt;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;1，&lt;span style=&quot;font: 7pt 'Times New Roman';&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;制作报表&lt;/span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;可以引入参数和宏用来判断调用的图片&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoListParagraph&quot; style=&quot;text-indent: -18pt; margin-left: 18pt;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;    宏定义case(arg1,list(1),&amp;#8221;&amp;lt;img src=&amp;#8217;http://127.0.0.1:6001/demo/images/checked.jpg&amp;#8217;&amp;gt;&amp;#8221;,list(0),&amp;#8221;&amp;lt;img src=&amp;#8217;http://127.0.0.1:6001/demo/images/unchecked.jpg&amp;#8217;&amp;gt;&amp;#8221;,&amp;#8221;&amp;lt;img src=&amp;#8217;http://127.0.0.1:6001/demo/images/unchecked.jpg&amp;#8217;&amp;gt;&amp;#8221;) &lt;/span&gt;&lt;/span&gt;&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoListParagraph&quot; style=&quot;text-indent: -18pt; margin-left: 18pt;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;  &lt;/p&gt;
&lt;p class=&quot;MsoListParagraph&quot; style=&quot;text-indent: -18pt; margin-left: 18pt;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;2，&lt;span style=&quot;font: 7pt 'Times New Roman';&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;图片的单元格格式选用&lt;/span&gt;&lt;span&gt;html &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;格式&lt;/span&gt;  设置为 =${macro1}+&amp;#8221;个人&amp;#8221;&lt;/span&gt;&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoListParagraph&quot; style=&quot;text-indent: -18pt; margin-left: 18pt;&quot;&gt;&lt;span&gt;&lt;span&gt;     &lt;/span&gt;&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoListParagraph&quot; style=&quot;text-indent: -18pt; margin-left: 18pt;&quot;&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;3，&lt;span style=&quot;font: 7pt 'Times New Roman';&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;图片的大小不能太小，太小可能可以显示&lt;/span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;但打印的时候出不来&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoListParagraph&quot; style=&quot;text-indent: -18pt; margin-left: 18pt;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;    图片放到设定的的文件夹下（D:\Program Files\reportHome\webapps\demo\images） &lt;/span&gt;&lt;/span&gt;&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoListParagraph&quot; style=&quot;text-indent: -18pt; margin-left: 18pt;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;4，打印预览效果图&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoListParagraph&quot; style=&quot;text-indent: -18pt; margin-left: 18pt;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;   &lt;img src=&quot;/reportmis/mis2/reportcenter/ewebeditor/imgServlet?fileID=89ac9a47-cb30-4d87-81d5-a912418d3044&quot; border=&quot;0&quot; alt=&quot;&quot; /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoListParagraph&quot; style=&quot;text-indent: -18pt; margin-left: 18pt;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;  &lt;/p&gt;
&lt;p class=&quot;MsoListParagraph&quot; style=&quot;text-indent: -18pt; margin-left: 18pt;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;img src=&quot;/reportmis/mis2/reportcenter/ewebeditor/imgServlet?fileID=321cc17e-5683-4c02-8ac4-0acc4deb6a5a&quot; border=&quot;0&quot; alt=&quot;&quot; /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoListParagraph&quot; style=&quot;text-indent: -18pt; margin-left: 18pt;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoListParagraph&quot; style=&quot;text-indent: -18pt; margin-left: 18pt;&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;  &lt;br /&gt;
&lt;!-- keywords:报表打印,打印,web报表,复选框,图片导 --&gt;&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/614700381/quiee/feedsky/s.gif?r=http://www.quiee.com.cn/archives/2628&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</content:encoded><wfw:commentRss>http://www.quiee.com.cn/archives/2628/feed</wfw:commentRss><slash:comments>0</slash:comments><description>介绍如何打印出复选框的方框图而无需修改，满足客户的多种打印需求...&lt;img src=&quot;http://www1.feedsky.com/t1/614700381/quiee/feedsky/s.gif?r=http://www.quiee.com.cn/archives/2628&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>打印专题</category><category>图片导出</category><category>复选框</category><pubDate>Mon, 05 Sep 2011 17:32:31 +0800</pubDate><author>ROS</author><comments>http://www.quiee.com.cn/archives/2628#comments</comments><guid isPermaLink="false">http://www.quiee.com.cn/archives/2628</guid><dc:creator>ROS</dc:creator><fs:srclink>http://www.quiee.com.cn/archives/2628</fs:srclink><fs:srcfeed>http://www.quiee.com.cn/feed</fs:srcfeed><fs:itemid>feedsky/quiee/~7132717/614700381/5241428</fs:itemid></item><item><title>主子表+补足空行实现多栏式报表</title><link>http://www.quiee.com.cn/archives/2627</link><content:encoded>&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span&gt;&lt;strong&gt;报表需求：&lt;/strong&gt;&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span&gt;本例为客户的实际表样，需要实现如下需求：&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span&gt;&lt;img src=&quot;/wp-content/uploads/2011/08/5e881ec5-f113-4e45-ab8d-60fbc0bec848.jpg&quot; alt=&quot;&quot; width=&quot;553&quot; height=&quot;171&quot; /&gt;&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span&gt;根据承办人分组统计已归档，已登记，尚未登记的案件，在一张报表里进行统一展现。&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoListParagraph&quot; style=&quot;text-indent: -18pt; margin-left: 18pt;&quot;&gt;&lt;span&gt;&lt;span&gt;1.&lt;span style=&quot;font: 7pt 'Times New Roman';&quot;&gt;       &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;黄色，红色，蓝色区域分别以列表形式统计已归档，已登记，尚未登记的案件，三片区域形成多栏式报表。&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoListParagraph&quot; style=&quot;text-indent: -18pt; margin-left: 18pt;&quot;&gt;&lt;span&gt;&lt;span&gt;2.&lt;span style=&quot;font: 7pt 'Times New Roman';&quot;&gt;       &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;对每个承办人分组显示不同类型的案件。&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoListParagraph&quot; style=&quot;text-indent: -18pt; margin-left: 18pt;&quot;&gt;&lt;span&gt;&lt;span&gt;3.&lt;span style=&quot;font: 7pt 'Times New Roman';&quot;&gt;       &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;每一个承办人所占的行数相同，以案件数最大的行数为准，剩下的以补足空行的方法保证格式统一。&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;  &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span&gt;&lt;strong&gt;实现思路：&lt;/strong&gt;&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoListParagraph&quot; style=&quot;text-indent: -18pt; margin-left: 18pt;&quot;&gt;&lt;span&gt;&lt;span&gt;1.&lt;span style=&quot;font: 7pt 'Times New Roman';&quot;&gt;       &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;针对已归档案件，已登记案件，尚未登记案件设计三张独立的报表模板。设计主报表模板以引入式子报表的方式调用这三张模板，并且传入&lt;/span&gt;&lt;span&gt;”&lt;/span&gt;&lt;span&gt;承办人&lt;/span&gt;&lt;span&gt;”&lt;/span&gt;&lt;span&gt;作为报表参数，形成多栏式报表。&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoListParagraph&quot; style=&quot;text-indent: -18pt; margin-left: 18pt;&quot;&gt;&lt;span&gt;&lt;span&gt;2.&lt;span style=&quot;font: 7pt 'Times New Roman';&quot;&gt;       &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;为实现需求中的第&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;点，需要共享三张子报表模板中的数据集，根据数据集条数决定当前报表应该补多少行空白行。&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoListParagraph&quot; style=&quot;text-indent: 0cm; margin-left: 18pt;&quot;&gt;  &lt;/p&gt;
&lt;p class=&quot;MsoListParagraph&quot; style=&quot;text-indent: 0cm; margin-left: 18pt;&quot;&gt;  &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span&gt;&lt;strong&gt;具体实现：&lt;/strong&gt;&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoListParagraph&quot; style=&quot;text-indent: -18pt; margin-left: 18pt;&quot;&gt;&lt;span&gt;&lt;span&gt;1.&lt;span style=&quot;font: 7pt 'Times New Roman';&quot;&gt;       &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;子报表模板：&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoListParagraph&quot; style=&quot;text-indent: 0cm; margin-left: 18pt;&quot;&gt;&lt;span&gt;三张子报表的实现方式类型，这里只以其中一张报表为例介绍实现过程。&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoListParagraph&quot; style=&quot;text-indent: -18pt; margin-left: 38.25pt;&quot;&gt;&lt;span&gt;&lt;span&gt;1）&lt;span style=&quot;font: 7pt 'Times New Roman';&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;添加参数&lt;/span&gt;&lt;span&gt;name&lt;/span&gt;&lt;span&gt;，该参数需要从主报表模板中传入。&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoListParagraph&quot; style=&quot;text-indent: -18pt; margin-left: 38.25pt;&quot;&gt;&lt;span&gt;&lt;span&gt;2）&lt;span style=&quot;font: 7pt 'Times New Roman';&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;报表数据集为测试内建数据集&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoListParagraph&quot; style=&quot;text-indent: -18pt; margin-left: 38.25pt;&quot;&gt;&lt;span&gt;&lt;span&gt;3）&lt;span style=&quot;font: 7pt 'Times New Roman';&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;报表模板设计如下：&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoListParagraph&quot; style=&quot;text-indent: 0cm; margin-left: 38.25pt;&quot;&gt;&lt;span&gt;&lt;img src=&quot;/wp-content/uploads/2011/08/5cba4209-349b-4a85-8aac-4f9423125db7.jpg&quot; alt=&quot;&quot; width=&quot;497&quot; height=&quot;48&quot; /&gt;&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoListParagraph&quot; style=&quot;text-indent: 0cm; margin-left: 38.25pt;&quot;&gt;&lt;span&gt;筛选数据集中承办人（姓名）为&lt;/span&gt;&lt;span&gt;name&lt;/span&gt;&lt;span&gt;参数值的记录。&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoListParagraph&quot; style=&quot;text-indent: -18pt; margin-left: 18pt;&quot;&gt;&lt;span&gt;&lt;span&gt;2.&lt;span style=&quot;font: 7pt 'Times New Roman';&quot;&gt;       &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;主报表模板：&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoListParagraph&quot; style=&quot;text-indent: 0cm; margin-left: 18pt;&quot;&gt;&lt;span&gt;&lt;img src=&quot;/wp-content/uploads/2011/08/522e02dc-c544-4e13-9052-3923d9a1d59c.jpg&quot; alt=&quot;&quot; width=&quot;553&quot; height=&quot;55&quot; /&gt;&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoListParagraph&quot; style=&quot;text-indent: 0cm; margin-left: 18pt;&quot;&gt;&lt;span&gt;A3&lt;/span&gt;&lt;span&gt;单元格为可扩展单元格，其中为承办人的名字，测试使用表达式&lt;/span&gt;&lt;span&gt;=list(&amp;#8220;&lt;/span&gt;&lt;span&gt;俞巍&lt;/span&gt;&lt;span&gt;&amp;#8220;,&amp;#8221;&lt;/span&gt;&lt;span&gt;李四&lt;/span&gt;&lt;span&gt;&amp;#8220;,&amp;#8221;&lt;/span&gt;&lt;span&gt;王五&lt;/span&gt;&lt;span&gt;&amp;#8220;)&lt;/span&gt;&lt;span&gt;返回集合结果。&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoListParagraph&quot; style=&quot;text-indent: 0cm; margin-left: 18pt;&quot;&gt;&lt;span&gt;B3,H3,N3&lt;/span&gt;&lt;span&gt;单元格分别引用设计好的&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;张子报表，并传递&lt;/span&gt;&lt;span&gt;A3&lt;/span&gt;&lt;span&gt;单元格的值作为参数。&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoListParagraph&quot; style=&quot;text-indent: 0cm; margin-left: 18pt;&quot;&gt;&lt;span&gt;&lt;img src=&quot;/wp-content/uploads/2011/08/4448da7e-d2a8-489a-8604-487d91c833d4.jpg&quot; alt=&quot;&quot; width=&quot;554&quot; height=&quot;197&quot; /&gt;&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoListParagraph&quot; style=&quot;text-indent: 0cm; margin-left: 18pt;&quot;&gt;&lt;span&gt;通过以上方式可以预览得到如下效果：&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoListParagraph&quot; style=&quot;text-indent: 0cm; margin-left: 18pt;&quot;&gt;&lt;span&gt;&lt;img src=&quot;/wp-content/uploads/2011/08/8ad6c6b3-2035-48cc-97e4-8d84ba4243a2.jpg&quot; alt=&quot;&quot; width=&quot;554&quot; height=&quot;289&quot; /&gt;&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoListParagraph&quot; style=&quot;text-indent: 0cm; margin-left: 18pt;&quot;&gt;&lt;span&gt;通过预览效果可看出，对于相同的参数得到的子报表的条目数是不一致的，不足条目数的部分会出现空白区域。&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoListParagraph&quot; style=&quot;text-indent: 0cm; margin-left: 18pt;&quot;&gt;&lt;span&gt;为实现格式一致性，需要用不足空行的方式在空白区域补足空行。&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoListParagraph&quot; style=&quot;text-indent: 0cm; margin-left: 18pt;&quot;&gt;&lt;span&gt;下面就需要对设计好的三张子报表模板做修改，共享这三张模板的数据集，得到他们的最大行数，不足行数的模板补足空行。&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;text-indent: 20.25pt;&quot;&gt;&lt;span&gt;三张报表模板修改方式类似，同样以一张报表模板为例介绍，修改如下：&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;text-indent: 20.25pt;&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;）添加数据集，添加其他两个报表模板中用到的数据集&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;text-indent: 20.25pt;&quot;&gt;&lt;span&gt;&lt;img src=&quot;/wp-content/uploads/2011/08/c63114af-258e-4044-bce4-dd7460e0cea0.jpg&quot; alt=&quot;&quot; width=&quot;485&quot; height=&quot;133&quot; /&gt;&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;text-indent: 20.25pt;&quot;&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;）模板修改&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;text-indent: 20.25pt;&quot;&gt;&lt;span&gt;&lt;img src=&quot;/wp-content/uploads/2011/08/1047e139-0b40-4915-8700-1b3c595933ec.jpg&quot; alt=&quot;&quot; width=&quot;545&quot; height=&quot;117&quot; /&gt;&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoListParagraph&quot; style=&quot;text-indent: -35.25pt; margin-left: 55.5pt;&quot;&gt;&lt;span&gt;&lt;span&gt;A．&lt;span style=&quot;font: 7pt 'Times New Roman';&quot;&gt;             &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;第一行在&lt;/span&gt;&lt;span&gt;A1&lt;/span&gt;&lt;span&gt;，&lt;/span&gt;&lt;span&gt;B1&lt;/span&gt;&lt;span&gt;，&lt;/span&gt;&lt;span&gt;C1&lt;/span&gt;&lt;span&gt;分别统计根据&lt;/span&gt;&lt;span&gt;name&lt;/span&gt;&lt;span&gt;参数筛选的数据集记录数，也就是子报表的条目数。&lt;/span&gt;&lt;span&gt;E1&lt;/span&gt;&lt;span&gt;单元格&lt;/span&gt;&lt;span&gt;=maxc(B1,C1,D1,D1)[1]&lt;/span&gt;&lt;span&gt;取得&lt;/span&gt;&lt;span&gt;A1&lt;/span&gt;&lt;span&gt;，&lt;/span&gt;&lt;span&gt;B1&lt;/span&gt;&lt;span&gt;，&lt;/span&gt;&lt;span&gt;C1&lt;/span&gt;&lt;span&gt;单元格的最大值，也就是三张子报表的最大条目数。第一行为隐藏行。&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoListParagraph&quot; style=&quot;text-indent: -35.25pt; margin-left: 55.5pt;&quot;&gt;&lt;span&gt;&lt;span&gt;B．&lt;span style=&quot;font: 7pt 'Times New Roman';&quot;&gt;             &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;A4&lt;/span&gt;&lt;span&gt;单元格&lt;/span&gt;&lt;span&gt;=to(0,E1-count(B3{})-1) &lt;/span&gt;&lt;span&gt;根据本子报表实际扩展行数&lt;/span&gt;&lt;span&gt;count(B3{})&lt;/span&gt;&lt;span&gt;和最大记录数&lt;/span&gt;&lt;span&gt;E1&lt;/span&gt;&lt;span&gt;单元格值，计算需要补足的行数。该单元格不可视。&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin-left: 20.25pt;&quot;&gt;&lt;span&gt;修改子报表后的报表展现效果如下，空白区域已经以空行补足，保证格式一致性。&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;margin-left: 20.25pt;&quot;&gt;&lt;span&gt;&lt;img src=&quot;/wp-content/uploads/2011/08/81b0e192-9008-4f55-9f22-ef071f2a00d3.jpg&quot; alt=&quot;&quot; width=&quot;554&quot; height=&quot;291&quot; /&gt;&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;text-indent: 20.25pt;&quot;&gt;  &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;text-indent: 20.25pt;&quot;&gt;  &lt;br /&gt;
&lt;!-- keywords:报表设计,报表制作,Java报表,报表工具,web报表,多栏报表,报表模 --&gt;&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/614700382/quiee/feedsky/s.gif?r=http://www.quiee.com.cn/archives/2627&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</content:encoded><wfw:commentRss>http://www.quiee.com.cn/archives/2627/feed</wfw:commentRss><slash:comments>0</slash:comments><description>详细介绍如何利用主子表和补足空行实现多栏式报...&lt;img src=&quot;http://www1.feedsky.com/t1/614700382/quiee/feedsky/s.gif?r=http://www.quiee.com.cn/archives/2627&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>设计基础</category><category>多栏报表</category><category>报表模版</category><pubDate>Thu, 01 Sep 2011 15:38:51 +0800</pubDate><author>ROS</author><comments>http://www.quiee.com.cn/archives/2627#comments</comments><guid isPermaLink="false">http://www.quiee.com.cn/archives/2627</guid><dc:creator>ROS</dc:creator><fs:srclink>http://www.quiee.com.cn/archives/2627</fs:srclink><fs:srcfeed>http://www.quiee.com.cn/feed</fs:srcfeed><fs:itemid>feedsky/quiee/~7132717/614700382/5241428</fs:itemid></item><item><title>统计报表中巧用宏</title><link>http://www.quiee.com.cn/archives/2618</link><content:encoded>&lt;p&gt;&lt;P&gt;在面对海量基础数据时,统计报表的性能往往是重中之重.速度仿佛成了取胜之匙.我们在分析时发现,往往对于这种大数据量统计报表来说,直接面向基础数据进行处理有的时候并不是明智之举,因为sql执行速度也有瓶颈.这时,我们往往要用到中间表来提高速度.那么,在有并发的时候,如何来保证所抓取的数据都是最新的呢?&lt;/P&gt;&lt;br /&gt;
&lt;P&gt;我们这里提供一种思路:&lt;/P&gt;&lt;br /&gt;
&lt;P&gt;写一个存储过程,先清掉中间表的数据,然后进行数据抓取,填充到中间表中.利用报表的宏来执行这个存储过程,让报表抓取的数据都是最新的.&lt;/P&gt;&lt;br /&gt;
&lt;P&gt;报表宏在整个过程中很关键,由于它的特性是在报表运算之前，系统会全面搜索整张报表的表达式定义，将所有的宏名替换成宏值.所以把执行存储过程的重任交给报表宏是再合适不过了.&lt;/P&gt;&lt;br /&gt;
&lt;P&gt;首先,我们需要建立一个存储过程,来完成从基础表中抓取数据到中间表中的功能.由于这并不是本文的重点,此处省略存储过程的写法.&lt;/P&gt;&lt;br /&gt;
&lt;P&gt;然后,我们分析以下存储过程的内容,由于它只是完成抓取并填充数据的过程,并无返回值,所以,我们还需要写一个自定义函数来执行.&lt;/P&gt;&lt;br /&gt;
&lt;P&gt;例如:&lt;/P&gt;&lt;br /&gt;
&lt;P&gt;import java.sql.CallableStatement;&lt;BR&gt;import java.sql.Connection;&lt;BR&gt;import java.util.Map;&lt;/P&gt;&lt;br /&gt;
&lt;P&gt;import com.runqian.base4.resources.DataSetMessage;&lt;BR&gt;import com.runqian.base4.resources.MessageManager;&lt;BR&gt;import com.runqian.base4.util.Queue;&lt;BR&gt;import com.runqian.base4.util.ReportError;&lt;BR&gt;import com.runqian.base4.util.SQLTool;&lt;BR&gt;import com.runqian.base4.util.Stack;&lt;BR&gt;import com.runqian.report4.dataset.DataSet;&lt;BR&gt;import com.runqian.report4.model.expression.Expression;&lt;BR&gt;import com.runqian.report4.model.expression.Function;&lt;BR&gt;import com.runqian.report4.model.expression.Node;&lt;BR&gt;import com.runqian.report4.model.expression.Variant2;&lt;BR&gt;import com.runqian.report4.usermodel.Context;&lt;BR&gt;import com.runqian.report4.usermodel.DataSourceConfig;&lt;BR&gt;import com.runqian.report4.usermodel.IConnectionFactory;&lt;BR&gt;import com.runqian.report4.usermodel.IReport;&lt;/P&gt;&lt;br /&gt;
&lt;P&gt;&lt;BR&gt;public class ExecProc extends Function {&lt;/P&gt;&lt;br /&gt;
&lt;P&gt;&amp;nbsp;@Override&lt;BR&gt;&amp;nbsp;public Object calculate(final Context cxt, final boolean arg1) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;// TODO Auto-generated method stub&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; final String dbName = cxt.getDefDataSourceName();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; final DataSourceConfig dsc = cxt.getDataSourceConfig(dbName); //获取系统数据源配置&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IConnectionFactory conFactory = null; //数据连接工厂&lt;/P&gt;&lt;br /&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Connection cn&amp;nbsp; = cxt.getConnection(dbName); //获取数据库连接对象&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;if (cn == null ) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;conFactory = cxt.getConnectionFactory(dbName); //未取到数据库连接，取同名数据连接工厂&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;if (conFactory == null){ //无法获取正确数据库连接，返回错误信息&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;final MessageManager mm = DataSetMessage.get();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;throw new ReportError(mm.getMessage(&amp;#8220;error.noConnection&amp;#8221;, dbName, dbName));&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;cn = conFactory.getConnection();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;br /&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;if ((cn == null) || (cn.isClosed()))&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;throw new ReportError(&amp;#8220;过程调用函数执行异常，无有效数据库连接&amp;#8221;);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; String dbCharset = dsc.getDBCharset(); //获取数据库字符集&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;if (dbCharset == null) dbCharset = &amp;#8220;GBK&amp;#8221;;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; String clientCharset = dsc.getClientCharset(); //获取本地字符集&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (clientCharset == null) clientCharset = &amp;#8220;GBK&amp;#8221;;&lt;/P&gt;&lt;br /&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // String encoding = this.env.getDBCharset();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (this.paramList.size() == 0)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; throw new ReportError(&amp;#8220;过程调用函数参数列表为空&amp;#8221;);&lt;/P&gt;&lt;br /&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; final Expression param1 = (Expression)this.paramList.get(0);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; final Object result1 = Variant2.getValue(param1.calculate(cxt, false),false,false);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Object result1 = Variant2.getValue(arg0, arg1, arg2)(param1.calculate());&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; String sql = null;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (result1 instanceof String) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sql = (String)result1;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; throw new ReportError(&amp;#8220;过程调用函数参数1应为字符串&amp;#8221;);&lt;/P&gt;&lt;br /&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; final CallableStatement proc = cn.prepareCall(sql);&lt;/P&gt;&lt;br /&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; final int rn = 0;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int i = 1; for (final int isize = this.paramList.size(); i &amp;lt; isize; ++i) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; final Expression param = (Expression)this.paramList.get(i);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (param == null)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; throw new ReportError(&amp;#8220;过程调用函数出现无效参数&amp;#8221;);&lt;/P&gt;&lt;br /&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; final Object result = Variant2.getValue(param1.calculate(cxt, false),false,false);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SQLTool.setObject(1, proc, i, result, 9);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; proc.execute();&lt;/P&gt;&lt;br /&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; proc.close();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return null;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; catch (final Exception e)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; throw new ReportError(&amp;#8220;过程调用函数sql异常:&amp;#8221; + e.getMessage(), e);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;}&lt;/P&gt;&lt;br /&gt;
&lt;P&gt;}&lt;/P&gt;&lt;br /&gt;
&lt;P&gt;此自定义函数的功能就是执行这个存储过程,然后返回一个null.&lt;/P&gt;&lt;br /&gt;
&lt;P&gt;接着,我们在报表中部署以下这个自定义函数,在customFunctions.properties中写入&lt;/P&gt;&lt;br /&gt;
&lt;P&gt;ExecProc =0,ExecProc&lt;/P&gt;&lt;br /&gt;
&lt;P&gt;这样自定义函数就部署好了.&lt;/P&gt;&lt;br /&gt;
&lt;P&gt;最后,我们在报表里增加一个宏,然后调用:&lt;/P&gt;&lt;br /&gt;
&lt;P&gt;例如:ExecProc(&amp;#8220;call {procTest}&amp;#8221;)&lt;/P&gt;&lt;br /&gt;
&lt;P&gt;&lt;IMG border=0 src=&quot;/reportmis/mis2/reportcenter/ewebeditor/imgServlet?fileID=93554a78-facc-4fb9-aa38-9bc157bb28b6&quot;&gt;&lt;/P&gt;&lt;br /&gt;
&lt;P&gt;这样的话,整个过程通过报表宏得到了很好的解决.&lt;/P&gt;&lt;br /&gt;
&lt;P&gt;总结:利用报表中强大的宏功能,我们可以完成多种报表需求,例如报表复用(利用宏动态改变表达式),报表排序等等.&lt;BR&gt;&amp;nbsp;&lt;/P&gt;&lt;br /&gt;
&lt;!-- keywords:报表设计,报表制作,Java报表,报表工具,web报表,宏,统计报表,存储过程,报表排 --&gt;&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/614700383/quiee/feedsky/s.gif?r=http://www.quiee.com.cn/archives/2618&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</content:encoded><wfw:commentRss>http://www.quiee.com.cn/archives/2618/feed</wfw:commentRss><slash:comments>0</slash:comments><description>利用报表中强大的宏功能,可以完成多种报表需求,例如报表复用(利用宏动态改变表达式),报表排序等...&lt;img src=&quot;http://www1.feedsky.com/t1/614700383/quiee/feedsky/s.gif?r=http://www.quiee.com.cn/archives/2618&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>设计基础</category><category>存储过程</category><category>宏</category><category>统计报表</category><category>报表排序</category><pubDate>Tue, 30 Aug 2011 15:17:09 +0800</pubDate><author>ROS</author><comments>http://www.quiee.com.cn/archives/2618#comments</comments><guid isPermaLink="false">http://www.quiee.com.cn/archives/2618</guid><dc:creator>ROS</dc:creator><fs:srclink>http://www.quiee.com.cn/archives/2618</fs:srclink><fs:srcfeed>http://www.quiee.com.cn/feed</fs:srcfeed><fs:itemid>feedsky/quiee/~7132717/614700383/5241428</fs:itemid></item><item><title>jquery调整统计图缩放比例</title><link>http://www.quiee.com.cn/archives/2602</link><content:encoded>&lt;p&gt;&lt;strong&gt;需求描述：&lt;br /&gt;
&lt;/strong&gt;做一个通用统计图报表展现页面，统计图展现区域大小固定，能够根据报表生成的统计图大小进行统计图等比例缩放。使得大小不一的统计图都能够在指定框架内展现。&lt;br /&gt;
&lt;strong&gt;实现方式：&lt;br /&gt;
&lt;/strong&gt;利用jQuery图片预加载插件，重置图片宽度及高度，可以自动适应图片的宽和高以适应指定的外部框架的宽高。&lt;br /&gt;
&lt;strong&gt;具体实现：&lt;br /&gt;
&lt;/strong&gt;jQuery图片预加载插件介绍：&lt;br /&gt;
jquery.loadthumb.js&lt;br /&gt;
jQuery.fn.loadthumb = function(options) {&lt;br /&gt;
 options = $.extend({&lt;br /&gt;
   src : &amp;#8220;&amp;#8221;,&lt;br /&gt;
   imgId : &amp;#8220;myImgs&amp;#8221;,&lt;br /&gt;
   parentId : &amp;#8220;CRviewer&amp;#8221;&lt;br /&gt;
 },options);&lt;br /&gt;
 var _self = this;&lt;br /&gt;
 _self.hide();&lt;br /&gt;
 var img = new Image();&lt;br /&gt;
 $(img).load(function(){&lt;br /&gt;
  imgDem = {};&lt;br /&gt;
  imgDem.w  = img.width;&lt;br /&gt;
  imgDem.h  = img.height;&lt;br /&gt;
  imgDem = $.imgResize({&amp;#8220;w&amp;#8221;: $(&amp;#8220;#&amp;#8221;+options.parentId).width() ,&amp;#8221;h&amp;#8221;: $(&amp;#8220;#&amp;#8221;+options.parentId).height()},{&amp;#8220;w&amp;#8221;:imgDem.w,&amp;#8221;h&amp;#8221;:imgDem.h});&lt;br /&gt;
  var imgMargins = $.imgCenter({&amp;#8220;w&amp;#8221;: $(&amp;#8220;#&amp;#8221;+options.parentId).width() ,&amp;#8221;h&amp;#8221;: $(&amp;#8220;#&amp;#8221;+options.parentId).height()},{&amp;#8220;w&amp;#8221;:imgDem.w,&amp;#8221;h&amp;#8221;:imgDem.h});&lt;br /&gt;
  $(&amp;#8220;#&amp;#8221;+options.imgId).css({width:imgDem.w,height:imgDem.h,marginLeft:imgMargins.l,marginTop:imgMargins.t});&lt;br /&gt;
  _self.attr(&amp;#8220;src&amp;#8221;, options.src);&lt;br /&gt;
  _self.fadeIn(&amp;#8220;slow&amp;#8221;);&lt;br /&gt;
 }).attr(&amp;#8220;src&amp;#8221;, options.src);  //.atte(&amp;#8220;src&amp;#8221;,options.src)要放在load后面，&lt;br /&gt;
 return _self;&lt;br /&gt;
}&lt;br /&gt;
//重置图片宽度，高度插件 ( parentDem是父元素，imgDem是图片 )&lt;br /&gt;
jQuery.imgResize = function(parentDem,imgDem){&lt;br /&gt;
 if(imgDem.w&amp;gt;0 &amp;amp;&amp;amp; imgDem.h&amp;gt;0){&lt;br /&gt;
  var rate = (parentDem.w/imgDem.w &amp;lt; parentDem.h/imgDem.h)?parentDem.w/imgDem.w:parentDem.h/imgDem.h;&lt;br /&gt;
  //如果 指定高度/图片高度  小于  指定宽度/图片宽度 ，  那么，我们的比例数 取 指定高度/图片高度。&lt;br /&gt;
  //如果 指定高度/图片高度  大于  指定宽度/图片宽度 ，  那么，我们的比例数 取 指定宽度/图片宽度。&lt;br /&gt;
   &lt;br /&gt;
   imgDem.w = imgDem.w*rate; //图片新的宽度 = 宽度 * 比例数&lt;br /&gt;
    imgDem.h = imgDem.h*rate;&lt;br /&gt;
    }&lt;br /&gt;
 return imgDem;&lt;br /&gt;
}&lt;br /&gt;
//使图片在父元素内水平，垂直居中，( parentDem是父元素，imgDem是图片 )&lt;br /&gt;
jQuery.imgCenter = function(parentDem,imgDem){&lt;br /&gt;
 var left = (parentDem.w &amp;#8211; imgDem.w)*0.5;&lt;br /&gt;
 var top = (parentDem.h &amp;#8211; imgDem.h)*0.5;&lt;br /&gt;
 return { &amp;#8220;l&amp;#8221;: left , &amp;#8220;t&amp;#8221;: top};&lt;br /&gt;
}&lt;br /&gt;
统计图展现页面(showChart.jsp)部分代码：&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;!—引入相关的css文件和jquery及插件文件&amp;#8211;&amp;gt;&lt;br /&gt;
&amp;lt;link rel=&amp;#8221;stylesheet&amp;#8221; type=&amp;#8221;text/css&amp;#8221; href=&amp;#8221;cr.css&amp;#8221; /&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;#8221;http://jqueryjs.googlecode.com/files/jquery-1.3.2.min.js&amp;#8221; type=&amp;#8221;text/javascript&amp;#8221; language=&amp;#8221;javascript&amp;#8221; charset=&amp;#8221;utf-8&amp;#8243;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
 &amp;lt;script src=&amp;#8221;jquery.loadthumb.js&amp;#8221; type=&amp;#8221;text/javascript&amp;#8221; language=&amp;#8221;javascript&amp;#8221; charset=&amp;#8221;utf-8&amp;#8243;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;script type=&amp;#8221;text/javascript&amp;#8221;&amp;gt;&lt;br /&gt;
$(document).ready(function(){&lt;br /&gt;
 //获得报表中的img对象调用showImg()方法进行图片加载和等比例缩放&lt;br /&gt;
 var $img=$(&amp;#8220;#report1&amp;#8243;).find(&amp;#8220;img&amp;#8221;);&lt;br /&gt;
 showImg($img.attr(&amp;#8220;src&amp;#8221;));&lt;br /&gt;
});&lt;br /&gt;
function showImg(src) {&lt;br /&gt;
 var $img = $(&amp;#8220;#myImgs&amp;#8221;);&lt;br /&gt;
 $img.loadthumb({&lt;br /&gt;
  &amp;#8221;imgId&amp;#8221;:&amp;#8221;myImgs&amp;#8221;,&lt;br /&gt;
  &amp;#8221;src&amp;#8221;: src,&lt;br /&gt;
  &amp;#8221;parentId&amp;#8221;:&amp;#8221;CRviewer&amp;#8221;&lt;br /&gt;
 });&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;!—CRviewer是统计图展现的父元素（外部框架），myimgs是图片对象用于加载统计图结果&amp;#8211;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;#8221;CRviewer&amp;#8221; id=&amp;#8221;CRviewer&amp;#8221;&amp;gt;&lt;br /&gt;
  &amp;lt;img src=&amp;#8221;&quot; id=&amp;#8221;myImgs&amp;#8221;/&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
……&lt;br /&gt;
&amp;lt;!&amp;#8211;调用tag标签进行报表运算和统计图展现&amp;#8211;&amp;gt;&lt;br /&gt;
&amp;lt;report:html name=&amp;#8221;report1&amp;#8243; reportFileName=&amp;#8221;&amp;lt;%=report%&amp;gt;&amp;#8221;&lt;br /&gt;
   funcBarLocation=&amp;#8221;top&amp;#8221;&lt;br /&gt;
   exceptionPage=&amp;#8221;/reportJsp/myError2.jsp&amp;#8221;&lt;br /&gt;
   appletJarName=&amp;#8221;runqianReport4Applet.jar,dmGraphApplet.jar&amp;#8221;&lt;br /&gt;
   /&amp;gt; &lt;br /&gt;
 &lt;strong&gt;实现效果：&lt;br /&gt;
&lt;/strong&gt;将要进行图片缩放的统计图报表文件名作为参数raq的值传得给showChart.jsp，即可看到实现效果。下方为统计图原图，上方为统计图缩放后结果。&lt;br /&gt;
如：http://127.0.0.1:6001/demo/jsp/picSF/showChart.jsp?raq=8.2.raq&lt;br /&gt;
图片放大的效果：&lt;br /&gt;
 &lt;img src=&quot;/wp-content/uploads/2011/08/b98e7766-a798-44b4-9b13-d2d1b4e76254.jpg&quot; border=&quot;0&quot; alt=&quot;&quot; /&gt;&lt;br /&gt;
如：http://127.0.0.1:6001/demo/jsp/picSF/showChart.jsp?raq=8.3.raq&lt;br /&gt;
图片缩小的效果：&lt;br /&gt;
 &lt;img src=&quot;/wp-content/uploads/2011/08/4e667242-5616-498f-b7d6-f804d71e7fb9.jpg&quot; border=&quot;0&quot; alt=&quot;&quot; /&gt;&lt;br /&gt;
缺点：因为统计图的缩放是针对统计图生成的图片进行的，缩放后的图片是静态图片，不支持统计图超链接。&lt;br /&gt;
 &lt;br /&gt;
&lt;!-- keywords:报表统计图,图表,统计图大小,缩放比 --&gt;&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/614700384/quiee/feedsky/s.gif?r=http://www.quiee.com.cn/archives/2602&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</content:encoded><wfw:commentRss>http://www.quiee.com.cn/archives/2602/feed</wfw:commentRss><slash:comments>0</slash:comments><description>利用jQuery图片预加载插件，重置图片宽度及高度，可以自动适应图片的宽和高以适应指定的外部框架的宽高。
...&lt;img src=&quot;http://www1.feedsky.com/t1/614700384/quiee/feedsky/s.gif?r=http://www.quiee.com.cn/archives/2602&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>统计图大小</category><category>统计图相关</category><category>缩放比例</category><pubDate>Mon, 29 Aug 2011 00:14:06 +0800</pubDate><author>ROS</author><comments>http://www.quiee.com.cn/archives/2602#comments</comments><guid isPermaLink="false">http://www.quiee.com.cn/archives/2602</guid><dc:creator>ROS</dc:creator><fs:srclink>http://www.quiee.com.cn/archives/2602</fs:srclink><fs:srcfeed>http://www.quiee.com.cn/feed</fs:srcfeed><fs:itemid>feedsky/quiee/~7132717/614700384/5241428</fs:itemid></item><item><title>快逸报表让统计图分批展现数据</title><link>http://www.quiee.com.cn/archives/2599</link><content:encoded>&lt;div class=&quot;Section1&quot; style=&quot;layout-grid: 15.6pt none;&quot;&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;text-align: center;&quot;&gt;&lt;strong&gt;&lt;span&gt;快逸报表让统计图分批展现数据&lt;/span&gt;&lt;/strong&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;text-align: center;&quot;&gt;&lt;strong&gt;&lt;span&gt; &lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span&gt;需求描述&lt;/span&gt;&lt;/strong&gt;&lt;span&gt;：快逸报表让统计图分批展现数据，因为报表里的数据有点多，显示出来的统计图密密麻麻的，所以想能不能让一个统计图只统计30条数据，就是统计图第一页统计1—30条数据，第二页统计31—60条数据，第三页统计61—90条数据这样的。&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;text-indent: 12pt;&quot;&gt;&lt;span&gt;原来的报表，如图所示：&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;strong&gt;&lt;span&gt;&lt;img src=&quot;/wp-content/uploads/2011/08/553b91da-5fb8-4fa7-b27c-c1ba74931d34.jpg&quot; alt=&quot;&quot; width=&quot;553&quot; height=&quot;443&quot; /&gt;&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt; &lt;/strong&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;strong&gt; &lt;/strong&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span&gt;发布的效果为：&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;strong&gt;&lt;span&gt;&lt;img src=&quot;/wp-content/uploads/2011/08/7b744d9f-6a67-4c09-b2a1-c3ac803a00b9.jpg&quot; alt=&quot;&quot; width=&quot;554&quot; height=&quot;378&quot; /&gt;&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt; &lt;/strong&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;strong&gt; &lt;/strong&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;strong&gt;&lt;span&gt;关键字：统计图，分批，数据&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;strong&gt; &lt;/strong&gt; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span&gt;需求实现：&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;
 &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;strong&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;第一步：设计原来的报表，如图所示：&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;text-align: left; text-indent: 18pt;&quot;&gt;&lt;span&gt;首先添加二个数据列，然后在A4单元格中写入表达式：=to(0,ds1.dcount(Dept_No)/30)，B3中写入表达式：=to(1+A3*30,30+A3*30)，&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;text-align: left; text-indent: 18pt;&quot;&gt;&lt;span style=&quot;color: red;&quot;&gt;在A4单元格中写入表达式的目的是：按照每30条的数据进行分组隔开，B3单元格表达式的目的是：每组扩展30条数据。&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;  &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span&gt;更改后的报表，如图：&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoListParagraph&quot; style=&quot;text-indent: 0cm; margin-left: 18pt;&quot;&gt;&lt;span&gt;&lt;img src=&quot;/wp-content/uploads/2011/08/a86074d3-35fc-482f-89d5-f786e386938c.jpg&quot; alt=&quot;&quot; width=&quot;554&quot; height=&quot;392&quot; /&gt;&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoListParagraph&quot; style=&quot;text-indent: 0cm; margin-left: 18pt;&quot;&gt;  &lt;/p&gt;
&lt;p class=&quot;MsoListParagraph&quot; style=&quot;text-indent: 0cm; margin-left: 18pt;&quot;&gt;&lt;span&gt;第二步：预览效果&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoListParagraph&quot; style=&quot;text-indent: 0cm; margin-left: 18pt;&quot;&gt;&lt;span&gt;&lt;img src=&quot;/wp-content/uploads/2011/08/645ec18d-8ac4-4b12-a814-ce261da8e4cd.jpg&quot; alt=&quot;&quot; width=&quot;554&quot; height=&quot;451&quot; /&gt;&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoListParagraph&quot; style=&quot;text-indent: 0cm; margin-left: 18pt;&quot;&gt;&lt;span&gt;&lt;img src=&quot;/wp-content/uploads/2011/08/209bb7b0-77e7-4b6f-86f8-6280562a8407.jpg&quot; alt=&quot;&quot; width=&quot;554&quot; height=&quot;285&quot; /&gt;&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoListParagraph&quot; style=&quot;text-indent: 0cm; margin-left: 18pt;&quot;&gt;  &lt;/p&gt;
&lt;p class=&quot;MsoListParagraph&quot; style=&quot;text-indent: 0cm; margin-left: 18pt;&quot;&gt;&lt;span&gt;&lt;img src=&quot;/wp-content/uploads/2011/08/3b4acefc-c1e0-4d54-8bf0-d3c762a91970.jpg&quot; alt=&quot;&quot; width=&quot;554&quot; height=&quot;449&quot; /&gt;&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoListParagraph&quot; style=&quot;text-indent: 0cm; margin-left: 18pt;&quot;&gt;  &lt;/p&gt;
&lt;p class=&quot;MsoListParagraph&quot; style=&quot;text-indent: 0cm; margin-left: 18pt;&quot;&gt;  &lt;/p&gt;
&lt;p class=&quot;MsoListParagraph&quot; style=&quot;text-align: center; text-indent: 0cm; margin-left: 18pt;&quot;&gt;&lt;span&gt;&lt;img src=&quot;/wp-content/uploads/2011/08/85d713f0-5c26-4b69-8e27-da5368a36d8a.jpg&quot; alt=&quot;&quot; width=&quot;554&quot; height=&quot;259&quot; /&gt;&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoListParagraph&quot; style=&quot;text-indent: 0cm; margin-left: 18pt;&quot;&gt;  &lt;/p&gt;
&lt;p class=&quot;MsoListParagraph&quot; style=&quot;text-indent: 0cm; margin-left: 18pt;&quot;&gt;&lt;span&gt;总结：这样就可以按照每&lt;span&gt;30&lt;/span&gt;条为一组，让统计图进行分批展示数据了。&lt;/span&gt; &lt;br /&gt;
&lt;!-- keywords:报表统计图,图表,数据展 --&gt;&lt;/p&gt;
&lt;/div&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/614700385/quiee/feedsky/s.gif?r=http://www.quiee.com.cn/archives/2599&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</content:encoded><wfw:commentRss>http://www.quiee.com.cn/archives/2599/feed</wfw:commentRss><slash:comments>0</slash:comments><description>快逸报表让统计图分批展现数据，使统计图具有更高的客观性...&lt;img src=&quot;http://www1.feedsky.com/t1/614700385/quiee/feedsky/s.gif?r=http://www.quiee.com.cn/archives/2599&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>统计图</category><category>数据展现</category><category>统计图相关</category><pubDate>Fri, 26 Aug 2011 11:12:29 +0800</pubDate><author>ROS</author><comments>http://www.quiee.com.cn/archives/2599#comments</comments><guid isPermaLink="false">http://www.quiee.com.cn/archives/2599</guid><dc:creator>ROS</dc:creator><fs:srclink>http://www.quiee.com.cn/archives/2599</fs:srclink><fs:srcfeed>http://www.quiee.com.cn/feed</fs:srcfeed><fs:itemid>feedsky/quiee/~7132717/614700385/5241428</fs:itemid></item><item><title>带参数模板的折叠报表实现</title><link>http://www.quiee.com.cn/archives/2582</link><content:encoded>&lt;p&gt;&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;&quot;&gt;关于快逸折叠报表的实现已经有相关文章或例子进行过介绍，本文将在原有折叠报表的基础上，实现带有参数模板的折叠报表。&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;H2&gt;&lt;SPAN style=&quot;&quot;&gt;实现难点&lt;/SPAN&gt;&lt;/H2&gt;&lt;br /&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;&quot;&gt;我们原来制作的折叠报表是使用超链接传参数控制隐藏行实现的，每次要传递的参数放到&lt;/SPAN&gt;&lt;SPAN&gt;form&lt;/SPAN&gt;&lt;SPAN style=&quot;&quot;&gt;中保存，通过&lt;/SPAN&gt;&lt;SPAN&gt;request&lt;/SPAN&gt;&lt;SPAN style=&quot;&quot;&gt;传递给报表。&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;&quot;&gt;而参数模板的查询会跳转到&lt;/SPAN&gt;&lt;SPAN&gt;servlet&lt;/SPAN&gt;&lt;SPAN style=&quot;&quot;&gt;进行处理，其间会将原来放到&lt;/SPAN&gt;&lt;SPAN&gt;request&lt;/SPAN&gt;&lt;SPAN style=&quot;&quot;&gt;中的内容（参数和参数值等）一直保存，&lt;/SPAN&gt;&lt;SPAN&gt;servlet&lt;/SPAN&gt;&lt;SPAN style=&quot;&quot;&gt;处理后将&lt;/SPAN&gt;&lt;SPAN&gt;request&lt;/SPAN&gt;&lt;SPAN style=&quot;&quot;&gt;中的内容输出到&lt;/SPAN&gt;&lt;SPAN&gt;url&lt;/SPAN&gt;&lt;SPAN style=&quot;&quot;&gt;中，而且&lt;/SPAN&gt;&lt;SPAN&gt;url&lt;/SPAN&gt;&lt;SPAN style=&quot;&quot;&gt;不再变化，直到进行下一次查询。&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;&quot;&gt;这就导致了当通过参数模板查询数据后，再点击折叠报表必要的参数就无法通过&lt;/SPAN&gt;&lt;SPAN&gt;request&lt;/SPAN&gt;&lt;SPAN style=&quot;&quot;&gt;传递给报表了。&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;&quot;&gt;所以必须想办法将要传递的参数拼到现有不变的&lt;/SPAN&gt;&lt;SPAN&gt;url&lt;/SPAN&gt;&lt;SPAN style=&quot;&quot;&gt;中，可以先获取到现有的&lt;/SPAN&gt;&lt;SPAN&gt;url&lt;/SPAN&gt;&lt;SPAN style=&quot;&quot;&gt;，将需要传递的参数拼接到其中，然后再将拼好的串返回到&lt;/SPAN&gt;&lt;SPAN&gt;url&lt;/SPAN&gt;&lt;SPAN style=&quot;&quot;&gt;中。&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;H2&gt;&lt;SPAN style=&quot;&quot;&gt;实现步骤&lt;/SPAN&gt;&lt;/H2&gt;&lt;br /&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;&quot;&gt;通过超链接隐藏行做一张带有参数模板的折叠报表，发布后，点击查询可以看到折叠报表无法正常展开了。&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;&quot;&gt;我们来修改一下发布报表的&lt;/SPAN&gt;&lt;SPAN&gt;jsp&lt;/SPAN&gt;&lt;SPAN style=&quot;&quot;&gt;，&lt;/SPAN&gt;&lt;SPAN&gt;js&lt;/SPAN&gt;&lt;SPAN style=&quot;&quot;&gt;部分：&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;P style=&quot;TEXT-ALIGN: left&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot; COLOR: #3f5fbf; &quot;&gt;//&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f5fbf; &quot;&gt;获得当前浏览器&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f5fbf; &quot;&gt;url&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;P style=&quot;TEXT-ALIGN: left&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot; COLOR: #3f5fbf; &quot;&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #7f0055; &quot;&gt;var &lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;url = window.location.href;&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;P style=&quot;TEXT-ALIGN: left&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #7f0055; &quot;&gt;var &lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;new_url;&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;P style=&quot;TEXT-ALIGN: left&quot; class=MsoNormal align=left&gt;&amp;nbsp;&lt;/P&gt;&lt;br /&gt;
&lt;P style=&quot;TEXT-ALIGN: left&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f5fbf; &quot;&gt;//&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f5fbf; &quot;&gt;判断&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;P style=&quot;TEXT-ALIGN: left&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot; COLOR: #3f5fbf; &quot;&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #7f0055; &quot;&gt;if&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;(url.indexOf(&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #8e00ff; &quot;&gt;&amp;#8220;show_groups=&amp;#8221;&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;)&amp;lt;0)&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #7f0055; &quot;&gt;{&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f5fbf; &quot;&gt;//&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f5fbf; &quot;&gt;若&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f5fbf; &quot;&gt;url&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f5fbf; &quot;&gt;中不包含&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f5fbf; &quot;&gt;show_groups&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f5fbf; &quot;&gt;字样，说明报表无展开&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;P style=&quot;TEXT-ALIGN: left&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot; COLOR: #3f5fbf; &quot;&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;frm.submit();&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f5fbf; &quot;&gt;//&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f5fbf; &quot;&gt;此时不改变&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f5fbf; &quot;&gt;url&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f5fbf; &quot;&gt;，使用原有方式提交表单&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;P style=&quot;TEXT-ALIGN: left&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot; COLOR: #3f5fbf; &quot;&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #7f0055; &quot;&gt;}else{&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f5fbf; &quot;&gt;//&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f5fbf; &quot;&gt;若&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f5fbf; &quot;&gt;url&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f5fbf; &quot;&gt;中包含&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f5fbf; &quot;&gt;show_groups&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f5fbf; &quot;&gt;字样，说明折叠报表有部分展开并进行了参数查询&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;P style=&quot;TEXT-ALIGN: left&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot; COLOR: #3f5fbf; &quot;&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;new_url = url.substr(0,url.indexOf(&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #8e00ff; &quot;&gt;&amp;#8220;show_groups=&amp;#8221;&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;)+12)+groups+url.substr(url.indexOf(&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #8e00ff; &quot;&gt;&amp;#8220;&amp;amp;context_name=&amp;#8221;&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;),url.length);&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f5fbf; &quot;&gt;//&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f5fbf; &quot;&gt;拼接&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f5fbf; &quot;&gt;url&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;P style=&quot;TEXT-ALIGN: left&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot; COLOR: #3f5fbf; &quot;&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;window.location.href=new_url;&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f5fbf; &quot;&gt;//&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f5fbf; &quot;&gt;将修改后&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f5fbf; &quot;&gt;url&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f5fbf; &quot;&gt;串返回浏览器，不进行表单提交&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN style=&quot; COLOR: #3f5fbf; &quot;&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #7f0055; &quot;&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;P class=MsoNormal&gt;&amp;nbsp;&lt;/P&gt;&lt;br /&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN style=&quot;&quot;&gt;重新访问该报表，可以看到报表查询后可以正常展开折叠&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;IMG src=&quot;/wp-content/uploads/2011/08/dc354b9a-8e94-4abc-ab0d-25b4d1732997.jpg&quot; width=553 height=263&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;P class=MsoNormal&gt;&amp;nbsp;&lt;/P&gt;&lt;br /&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN style=&quot;&quot;&gt;部分主要代码：&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;P style=&quot;TEXT-ALIGN: left&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot; COLOR: #bf5f3f; &quot;&gt;&amp;lt;%&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;P style=&quot;TEXT-ALIGN: left&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;request.setCharacterEncoding( &lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #2a00ff; &quot;&gt;&amp;#8220;GBK&amp;#8221;&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt; );&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;P style=&quot;TEXT-ALIGN: left&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Exception exp = &lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style=&quot; COLOR: #7f0055; &quot;&gt;null&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;;&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;P style=&quot;TEXT-ALIGN: left&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Context ctx = &lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style=&quot; COLOR: #7f0055; &quot;&gt;null&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;;&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;P style=&quot;TEXT-ALIGN: left&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;String contextName = request.getParameter(&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #2a00ff; &quot;&gt;&amp;#8220;context_name&amp;#8221;&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;);&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;P style=&quot;TEXT-ALIGN: left&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;String raqFile = request.getParameter(&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #2a00ff; &quot;&gt;&amp;#8220;raq&amp;#8221;&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;);&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;P style=&quot;TEXT-ALIGN: left&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;String showGroups = &lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #2a00ff; &quot;&gt;&amp;#8220;&amp;#8221;&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;;&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;P style=&quot;TEXT-ALIGN: left&quot; class=MsoNormal align=left&gt;&amp;nbsp;&lt;/P&gt;&lt;br /&gt;
&lt;P style=&quot;TEXT-ALIGN: left&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;session.setMaxInactiveInterval(-1);&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;P style=&quot;TEXT-ALIGN: left&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;P style=&quot;TEXT-ALIGN: left&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style=&quot; COLOR: #7f0055; &quot;&gt;try&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;{&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;P style=&quot;TEXT-ALIGN: left&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style=&quot; COLOR: #7f0055; &quot;&gt;if&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;(raqFile==&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style=&quot; COLOR: #7f0055; &quot;&gt;null&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt; || &lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #2a00ff; &quot;&gt;&amp;#8220;&amp;#8221;&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;.equals(raqFile)) &lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style=&quot; COLOR: #7f0055; &quot;&gt;throw&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt; &lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style=&quot; COLOR: #7f0055; &quot;&gt;new&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt; Exception(&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #2a00ff; &quot;&gt;&amp;#8220;&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #2a00ff; &quot;&gt;未指定报表模版名！&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #2a00ff; &quot;&gt;&amp;#8220;&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;);&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;P style=&quot;TEXT-ALIGN: left&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f7f5f; &quot;&gt;// &lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f7f5f; &quot;&gt;没有&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f7f5f; &quot;&gt;context_name&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f7f5f; &quot;&gt;参数，说明页面第一次被访问，构建一个&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f7f5f; &quot;&gt;context&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;P style=&quot;TEXT-ALIGN: left&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style=&quot; COLOR: #7f0055; &quot;&gt;if&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;(contextName==&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style=&quot; COLOR: #7f0055; &quot;&gt;null&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt; || &lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #2a00ff; &quot;&gt;&amp;#8220;&amp;#8221;&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;.equals(contextName)){&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;P style=&quot;TEXT-ALIGN: left&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f7f5f; &quot;&gt;// &lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f7f5f; &quot;&gt;读取报表模版&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;P style=&quot;TEXT-ALIGN: left&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;ReportDefine rd = (ReportDefine)ReportUtils.read(application.getResourceAsStream(Context.getMainDir()+&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #2a00ff; &quot;&gt;&amp;#8220;/&amp;#8221;&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;+raqFile));&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;P style=&quot;TEXT-ALIGN: left&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;ctx = &lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style=&quot; COLOR: #7f0055; &quot;&gt;new&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt; Context();&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;P style=&quot;TEXT-ALIGN: left&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f7f5f; &quot;&gt;// &lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f7f5f; &quot;&gt;因为要将&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f7f5f; &quot;&gt;context&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f7f5f; &quot;&gt;存在&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f7f5f; &quot;&gt;session&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f7f5f; &quot;&gt;中，所以名称最好加上一些随机值，此处省略&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f7f5f; &quot;&gt;&amp;#8230;&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;P style=&quot;TEXT-ALIGN: left&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;contextName = &lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #2a00ff; &quot;&gt;&amp;#8220;report_context&amp;#8221;&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;;&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;P style=&quot;TEXT-ALIGN: left&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;P style=&quot;TEXT-ALIGN: left&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style=&quot; COLOR: #7f0055; &quot;&gt;else&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;{&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;P style=&quot;TEXT-ALIGN: left&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;ctx = (Context)session.getAttribute(contextName);&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;P style=&quot;TEXT-ALIGN: left&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style=&quot; COLOR: #7f0055; &quot;&gt;if&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;(ctx==&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style=&quot; COLOR: #7f0055; &quot;&gt;null&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;) &lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style=&quot; COLOR: #7f0055; &quot;&gt;throw&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt; &lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style=&quot; COLOR: #7f0055; &quot;&gt;new&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt; Exception(&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #2a00ff; &quot;&gt;&amp;#8220;&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #2a00ff; &quot;&gt;找不到&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #2a00ff; &quot;&gt;Context&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #2a00ff; &quot;&gt;！&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #2a00ff; &quot;&gt;&amp;#8220;&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;);&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;P style=&quot;TEXT-ALIGN: left&quot; class=MsoNormal align=left&gt;&amp;nbsp;&lt;/P&gt;&lt;br /&gt;
&lt;P style=&quot;TEXT-ALIGN: left&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f7f5f; &quot;&gt;// &lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f7f5f; &quot;&gt;如果是数组参数，传入&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f7f5f; &quot;&gt;context &lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f7f5f; &quot;&gt;要用&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f7f5f; &quot;&gt;ArrayList&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f7f5f; &quot;&gt;类&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;P style=&quot;TEXT-ALIGN: left&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;showGroups = request.getParameter(&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #2a00ff; &quot;&gt;&amp;#8220;show_groups&amp;#8221;&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;);&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;P style=&quot;TEXT-ALIGN: left&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;String gs[] = showGroups.split(&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #2a00ff; &quot;&gt;&amp;#8220;,&amp;#8221;&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;);&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;P style=&quot;TEXT-ALIGN: left&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;ArrayList al = &lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style=&quot; COLOR: #7f0055; &quot;&gt;new&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt; ArrayList();&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;P style=&quot;TEXT-ALIGN: left&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style=&quot; COLOR: #7f0055; &quot;&gt;for&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;(&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style=&quot; COLOR: #7f0055; &quot;&gt;int&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt; i=0;i&amp;lt;gs.length;i++) al.add(gs[i]);&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;P style=&quot;TEXT-ALIGN: left&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;ctx.setParamValue(&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #2a00ff; &quot;&gt;&amp;#8220;show_groups&amp;#8221;&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;,al);&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;P style=&quot;TEXT-ALIGN: left&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;P style=&quot;TEXT-ALIGN: left&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f7f5f; &quot;&gt;// &lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f7f5f; &quot;&gt;保存到&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f7f5f; &quot;&gt;session&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f7f5f; &quot;&gt;中，供下次使用&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;P style=&quot;TEXT-ALIGN: left&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;session.setAttribute(contextName,ctx);&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;P style=&quot;TEXT-ALIGN: left&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f7f5f; &quot;&gt;// &lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f7f5f; &quot;&gt;保存到&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f7f5f; &quot;&gt;request&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f7f5f; &quot;&gt;中，传给报表&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;P style=&quot;TEXT-ALIGN: left&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;request.setAttribute(contextName,ctx);&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;P style=&quot;TEXT-ALIGN: left&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;P style=&quot;TEXT-ALIGN: left&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style=&quot; COLOR: #7f0055; &quot;&gt;catch&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;(Exception e){&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;P style=&quot;TEXT-ALIGN: left&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;exp = e;&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;P style=&quot;TEXT-ALIGN: left&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;e.printStackTrace();&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;P style=&quot;TEXT-ALIGN: left&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;P style=&quot;TEXT-ALIGN: left&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot; COLOR: #bf5f3f; &quot;&gt;%&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;P style=&quot;TEXT-ALIGN: left&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot; COLOR: teal; &quot;&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f7f7f; &quot;&gt;html&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: teal; &quot;&gt;&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;P style=&quot;TEXT-ALIGN: left&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot; COLOR: teal; &quot;&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f7f7f; &quot;&gt;head&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: teal; &quot;&gt;&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;P style=&quot;TEXT-ALIGN: left&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot; COLOR: teal; &quot;&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f7f7f; &quot;&gt;title&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: teal; &quot;&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;折叠报表例子&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;2&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: teal; &quot;&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f7f7f; &quot;&gt;title&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: teal; &quot;&gt;&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;P style=&quot;TEXT-ALIGN: left&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot; COLOR: teal; &quot;&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f7f7f; &quot;&gt;script &lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #7f007f; &quot;&gt;language&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;=&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #2a00ff; &quot;&gt;&amp;#8220;javascript&amp;#8221;&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: teal; &quot;&gt;&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;P style=&quot;TEXT-ALIGN: left&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f5fbf; &quot;&gt;// &lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f5fbf; &quot;&gt;参数是要折叠&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f5fbf; &quot;&gt;/&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f5fbf; &quot;&gt;展开的组名&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;P style=&quot;TEXT-ALIGN: left&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot; COLOR: #3f5fbf; &quot;&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #7f0055; &quot;&gt;function &lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;_changeShowGroup(group)&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #7f0055; &quot;&gt;{&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;P style=&quot;TEXT-ALIGN: left&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot; COLOR: #7f0055; &quot;&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f5fbf; &quot;&gt;//alert(&amp;#8220;B10&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f5fbf; &quot;&gt;内容：&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f5fbf; &quot;&gt;&amp;#8220;+group);&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;P style=&quot;TEXT-ALIGN: left&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot; COLOR: #3f5fbf; &quot;&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #7f0055; &quot;&gt;var &lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;frm = document.tree_params;&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;P style=&quot;TEXT-ALIGN: left&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #7f0055; &quot;&gt;var &lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;groups = frm.show_groups.value;&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;P style=&quot;TEXT-ALIGN: left&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f5fbf; &quot;&gt;//alert(&amp;#8220;frm.show_groups-&amp;gt;&amp;#8221;+groups);&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;P style=&quot;TEXT-ALIGN: left&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot; COLOR: #3f5fbf; &quot;&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;// &lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f5fbf; &quot;&gt;重新组装参数&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f5fbf; &quot;&gt;&amp;#8230;&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;P style=&quot;TEXT-ALIGN: left&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot; COLOR: #3f5fbf; &quot;&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #7f0055; &quot;&gt;var&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt; isInGroup = &lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #7f0055; &quot;&gt;false&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;;&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;P style=&quot;TEXT-ALIGN: left&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #7f0055; &quot;&gt;var &lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;gs = groups.split(&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #8e00ff; &quot;&gt;&amp;#8220;,&amp;#8221;&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;);&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;P style=&quot;TEXT-ALIGN: left&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;groups = &lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #8e00ff; &quot;&gt;&amp;#8220;&amp;#8221;&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;;&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;P style=&quot;TEXT-ALIGN: left&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #7f0055; &quot;&gt;for&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;(&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #7f0055; &quot;&gt;var &lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;i=0;i&amp;lt;gs.length;i++)&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #7f0055; &quot;&gt;{&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;P style=&quot;TEXT-ALIGN: left&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot; COLOR: #7f0055; &quot;&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;if&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;(gs[i]!=group)&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;P style=&quot;TEXT-ALIGN: left&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;&lt;SPAN&gt;&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; &lt;/SPAN&gt;groups += gs[i]+&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #8e00ff; &quot;&gt;&amp;#8220;,&amp;#8221;&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;;&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;P style=&quot;TEXT-ALIGN: left&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #7f0055; &quot;&gt;else&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;P style=&quot;TEXT-ALIGN: left&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot; COLOR: #7f0055; &quot;&gt;&lt;SPAN&gt;&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; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;isInGroup = &lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #7f0055; &quot;&gt;true&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;;&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;P style=&quot;TEXT-ALIGN: left&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #7f0055; &quot;&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;P style=&quot;TEXT-ALIGN: left&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot; COLOR: #7f0055; &quot;&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;if&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;(!isInGroup) groups += group;&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;P style=&quot;TEXT-ALIGN: left&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f5fbf; &quot;&gt;// &lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f5fbf; &quot;&gt;清除首尾多余的逗号&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;P style=&quot;TEXT-ALIGN: left&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot; COLOR: #3f5fbf; &quot;&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #7f0055; &quot;&gt;while&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;(groups.substr(groups.length-1,1)==&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #8e00ff; &quot;&gt;&amp;#8220;,&amp;#8221;&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;) groups = groups.substring(0,groups.length-1);&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;P style=&quot;TEXT-ALIGN: left&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #7f0055; &quot;&gt;while&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;(groups.substr(0,1)==&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #8e00ff; &quot;&gt;&amp;#8220;,&amp;#8221;&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;) groups = groups.substring(1,groups.length);&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;P style=&quot;TEXT-ALIGN: left&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f5fbf; &quot;&gt;//alert(&amp;#8220;&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f5fbf; &quot;&gt;处理后&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f5fbf; &quot;&gt;groups:&amp;#8221;+groups)&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;P style=&quot;TEXT-ALIGN: left&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f5fbf; &quot;&gt;// &lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f5fbf; &quot;&gt;填值，提交&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;P style=&quot;TEXT-ALIGN: left&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot; COLOR: #3f5fbf; &quot;&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;frm.show_groups.value = groups;&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;P style=&quot;TEXT-ALIGN: left&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;P style=&quot;TEXT-ALIGN: left&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f5fbf; &quot;&gt;//&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f5fbf; &quot;&gt;获得当前浏览器&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f5fbf; &quot;&gt;url&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;P style=&quot;TEXT-ALIGN: left&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot; COLOR: #3f5fbf; &quot;&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #7f0055; &quot;&gt;var &lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;url = window.location.href;&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;P style=&quot;TEXT-ALIGN: left&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #7f0055; &quot;&gt;var &lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;new_url;&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;P style=&quot;TEXT-ALIGN: left&quot; class=MsoNormal align=left&gt;&amp;nbsp;&lt;/P&gt;&lt;br /&gt;
&lt;P style=&quot;TEXT-ALIGN: left&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f5fbf; &quot;&gt;//&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f5fbf; &quot;&gt;判断&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;P style=&quot;TEXT-ALIGN: left&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot; COLOR: #3f5fbf; &quot;&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #7f0055; &quot;&gt;if&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;(url.indexOf(&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #8e00ff; &quot;&gt;&amp;#8220;show_groups=&amp;#8221;&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;)&amp;lt;0)&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #7f0055; &quot;&gt;{&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f5fbf; &quot;&gt;//&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f5fbf; &quot;&gt;若&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f5fbf; &quot;&gt;url&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f5fbf; &quot;&gt;中不包含&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f5fbf; &quot;&gt;show_groups&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f5fbf; &quot;&gt;字样，说明报表无展开&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;P style=&quot;TEXT-ALIGN: left&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot; COLOR: #3f5fbf; &quot;&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;frm.submit();&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f5fbf; &quot;&gt;//&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f5fbf; &quot;&gt;此时不改变&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f5fbf; &quot;&gt;url&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f5fbf; &quot;&gt;，使用原有方式提交表单&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;P style=&quot;TEXT-ALIGN: left&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot; COLOR: #3f5fbf; &quot;&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #7f0055; &quot;&gt;}else{&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f5fbf; &quot;&gt;//&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f5fbf; &quot;&gt;若&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f5fbf; &quot;&gt;url&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f5fbf; &quot;&gt;中包含&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f5fbf; &quot;&gt;show_groups&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f5fbf; &quot;&gt;字样，说明折叠报表有部分展开并进行了参数查询&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;P style=&quot;TEXT-ALIGN: left&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot; COLOR: #3f5fbf; &quot;&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;new_url = url.substr(0,url.indexOf(&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #8e00ff; &quot;&gt;&amp;#8220;show_groups=&amp;#8221;&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;)+12)+groups+url.substr(url.indexOf(&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #8e00ff; &quot;&gt;&amp;#8220;&amp;amp;context_name=&amp;#8221;&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;),url.length);&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f5fbf; &quot;&gt;//&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f5fbf; &quot;&gt;拼接&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f5fbf; &quot;&gt;url&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;P style=&quot;TEXT-ALIGN: left&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot; COLOR: #3f5fbf; &quot;&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;window.location.href=new_url;&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f5fbf; &quot;&gt;//&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f5fbf; &quot;&gt;将修改后&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f5fbf; &quot;&gt;url&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f5fbf; &quot;&gt;串返回浏览器，不进行表单提交&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;P style=&quot;TEXT-ALIGN: left&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot; COLOR: #3f5fbf; &quot;&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #7f0055; &quot;&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;P style=&quot;TEXT-ALIGN: left&quot; class=MsoNormal align=left&gt;&amp;nbsp;&lt;/P&gt;&lt;br /&gt;
&lt;P style=&quot;TEXT-ALIGN: left&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot; COLOR: #7f0055; &quot;&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f5fbf; &quot;&gt;//alert(&amp;#8220;&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f5fbf; &quot;&gt;放到&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f5fbf; &quot;&gt;form&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f5fbf; &quot;&gt;里的&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f5fbf; &quot;&gt;groups:&amp;#8221;+frm.show_groups.value);&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;P style=&quot;TEXT-ALIGN: left&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot; COLOR: #3f5fbf; &quot;&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;//frm.submit();&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;P style=&quot;TEXT-ALIGN: left&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot; COLOR: #3f5fbf; &quot;&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #7f0055; &quot;&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;P style=&quot;TEXT-ALIGN: left&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot; COLOR: teal; &quot;&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f7f7f; &quot;&gt;script&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: teal; &quot;&gt;&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;P style=&quot;TEXT-ALIGN: left&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot; COLOR: teal; &quot;&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f7f7f; &quot;&gt;head&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: teal; &quot;&gt;&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;P style=&quot;TEXT-ALIGN: left&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot; COLOR: teal; &quot;&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f7f7f; &quot;&gt;body&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: teal; &quot;&gt;&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;P style=&quot;TEXT-ALIGN: left&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot; COLOR: teal; &quot;&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f7f7f; &quot;&gt;form &lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #7f007f; &quot;&gt;name&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;=&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #2a00ff; &quot;&gt;&amp;#8220;tree_params&amp;#8221; &lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #7f007f; &quot;&gt;action&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;=&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #2a00ff; &quot;&gt;&amp;#8220;&amp;#8221; &lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #7f007f; &quot;&gt;method&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;=&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #2a00ff; &quot;&gt;&amp;#8220;post&amp;#8221;&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: teal; &quot;&gt;&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;P style=&quot;TEXT-ALIGN: left&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: teal; &quot;&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f7f7f; &quot;&gt;input &lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #7f007f; &quot;&gt;type&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;=&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #2a00ff; &quot;&gt;&amp;#8220;hidden&amp;#8221; &lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #7f007f; &quot;&gt;name&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;=&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #2a00ff; &quot;&gt;&amp;#8220;context_name&amp;#8221; &lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #7f007f; &quot;&gt;value&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;=&lt;/SPAN&gt;&lt;SPAN style=&quot; &quot;&gt;&amp;#8220;&lt;SPAN style=&quot;COLOR: #bf5f3f&quot;&gt;&amp;lt;%=&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: black&quot;&gt;contextName &lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #bf5f3f&quot;&gt;%&amp;gt;&lt;/SPAN&gt;&amp;#8220;&lt;SPAN style=&quot;COLOR: teal&quot;&gt;&amp;gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;
&lt;P style=&quot;TEXT-ALIGN: left&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: teal; &quot;&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f7f7f; &quot;&gt;input &lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #7f007f; &quot;&gt;type&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;=&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #2a00ff; &quot;&gt;&amp;#8220;hidden&amp;#8221; &lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #7f007f; &quot;&gt;name&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;=&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #2a00ff; &quot;&gt;&amp;#8220;show_groups&amp;#8221; &lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #7f007f; &quot;&gt;value&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: black; &quot;&gt;=&lt;/SPAN&gt;&lt;SPAN style=&quot; &quot;&gt;&amp;#8220;&lt;SPAN style=&quot;COLOR: #bf5f3f&quot;&gt;&amp;lt;%=&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: black&quot;&gt;showGroups &lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #bf5f3f&quot;&gt;%&amp;gt;&lt;/SPAN&gt;&amp;#8220;&lt;SPAN style=&quot;COLOR: teal&quot;&gt;&amp;gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/p&gt;
&lt;p&gt;&lt;SPAN style=&quot; COLOR: teal; &quot;&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: #3f7f7f; &quot;&gt;form&lt;/SPAN&gt;&lt;SPAN style=&quot; COLOR: teal; &quot;&gt;&amp;gt;&lt;/SPAN&gt;&lt;br /&gt;
&lt;!-- keywords:报表设计,报表制作,Java报表,报表工具,web报表,折叠报表,参数模 --&gt;&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/614700386/quiee/feedsky/s.gif?r=http://www.quiee.com.cn/archives/2582&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</content:encoded><wfw:commentRss>http://www.quiee.com.cn/archives/2582/feed</wfw:commentRss><slash:comments>0</slash:comments><description>在原有折叠报表的基础上，实现带有参数模板的折叠报表。
...&lt;img src=&quot;http://www1.feedsky.com/t1/614700386/quiee/feedsky/s.gif?r=http://www.quiee.com.cn/archives/2582&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>折叠报表</category><category>设计基础</category><category>参数模板</category><pubDate>Mon, 15 Aug 2011 14:14:36 +0800</pubDate><author>ROS</author><comments>http://www.quiee.com.cn/archives/2582#comments</comments><guid isPermaLink="false">http://www.quiee.com.cn/archives/2582</guid><dc:creator>ROS</dc:creator><fs:srclink>http://www.quiee.com.cn/archives/2582</fs:srclink><fs:srcfeed>http://www.quiee.com.cn/feed</fs:srcfeed><fs:itemid>feedsky/quiee/~7132717/614700386/5241428</fs:itemid></item><item><title>参数表单动态更改参数设置</title><link>http://www.quiee.com.cn/archives/2580</link><content:encoded>&lt;p class=&quot;MsoNormal&quot; style=&quot;text-indent: 21.75pt;&quot;&gt;&lt;span&gt;用户可通过快逸的参数表单对报表结果进行查询，在选择条件时要求能够动态更改参数的输入。&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;text-indent: 21.75pt;&quot;&gt;&lt;span&gt;如：&lt;/span&gt;&lt;span&gt;&lt;img src=&quot;/wp-content/uploads/2011/08/007a1ade-c1bc-46e8-b256-40a80fd77f63.jpg&quot; alt=&quot;&quot; width=&quot;479&quot; height=&quot;122&quot; /&gt;&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;text-indent: 21.75pt;&quot;&gt;&lt;span&gt;根据&lt;a href=&quot;http://www.quiee.com.cn&quot;&gt;报表&lt;/a&gt;类型的不同设置不同的日期输入方式，如果为日报表、周报表等，只需要选择一个日期，报表在接收参数时即可通过该日期自动算出周一和周末的时间。针对此类需求，客户还可以要求自定义时间，及选择自定义时间后，生成起始日期和结束日期两个参数输入框，如图：&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;text-indent: 21.75pt;&quot;&gt;&lt;span&gt;&lt;img src=&quot;/wp-content/uploads/2011/08/5ed85759-e2d0-4aec-a902-c28463f5593a.jpg&quot; alt=&quot;&quot; width=&quot;470&quot; height=&quot;134&quot; /&gt;&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;text-indent: 21.75pt;&quot;&gt;&lt;span&gt;这样客户就能够根据自己的需求灵活的设置查询时间。&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;text-indent: 21.75pt;&quot;&gt;&lt;span&gt;下面看下此需求的解决办法。&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;text-indent: 21.75pt;&quot;&gt;&lt;span&gt;一：定义参数模板&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;text-indent: 21.75pt;&quot;&gt;&lt;span&gt;&lt;img src=&quot;/wp-content/uploads/2011/08/445e4cb8-b7ff-422a-b836-0f7b329b0584.jpg&quot; alt=&quot;&quot; width=&quot;420&quot; height=&quot;129&quot; /&gt;&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;text-indent: 21.75pt;&quot;&gt;&lt;span&gt;其中&lt;/span&gt;&lt;span&gt;C2&lt;/span&gt;&lt;span&gt;单元格为下拉列表框供用户选择报表类型：&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;text-indent: 21.75pt;&quot;&gt;&lt;span&gt;&lt;img src=&quot;/wp-content/uploads/2011/08/9afc2378-f968-4e7d-915a-3a352f4ae32c.jpg&quot; alt=&quot;&quot; width=&quot;414&quot; height=&quot;219&quot; /&gt;&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;text-indent: 21.75pt;&quot;&gt;&lt;span&gt;F2&lt;/span&gt;&lt;span&gt;、&lt;/span&gt;&lt;span&gt;F3&lt;/span&gt;&lt;span&gt;、&lt;/span&gt;&lt;span&gt;F4&lt;/span&gt;&lt;span&gt;三个单元格设置为下拉日历供用户选择时间。&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;text-indent: 21.75pt;&quot;&gt;&lt;span&gt;二：增加触发设置&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;text-indent: 21.75pt;&quot;&gt;&lt;span&gt;因为客户要更改&lt;/span&gt;&lt;span&gt;C2&lt;/span&gt;&lt;span&gt;单元格内下拉框的值后要求动态改变参数输入框的值，此处可在某一单元格中增加一个自动计算即可，该自动计算中使用自定义&lt;/span&gt;&lt;span&gt;javascript&lt;/span&gt;&lt;span&gt;函数，当&lt;/span&gt;&lt;span&gt;C2&lt;/span&gt;&lt;span&gt;单元格值变后，触发该&lt;/span&gt;&lt;span&gt;js&lt;/span&gt;&lt;span&gt;，此处在&lt;/span&gt;&lt;span&gt;B5&lt;/span&gt;&lt;span&gt;单元格的自动计算中写入&lt;/span&gt;&lt;span&gt;cdate(C2)&lt;/span&gt;&lt;span&gt;，及&lt;/span&gt;&lt;span&gt;C2&lt;/span&gt;&lt;span&gt;单元格变换后，触发该&lt;/span&gt;&lt;span&gt;js&lt;/span&gt;&lt;span&gt;函数&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;text-indent: 21.75pt;&quot;&gt;&lt;span&gt;三：定义&lt;/span&gt;&lt;span&gt;js&lt;/span&gt;&lt;span&gt;函数，在显示报表的&lt;/span&gt;&lt;span&gt;jsp&lt;/span&gt;&lt;span&gt;页面中实现该&lt;/span&gt;&lt;span&gt;js&lt;/span&gt;&lt;span&gt;函数&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;text-indent: 21.75pt;&quot;&gt;&lt;span&gt;function cdate(arg1){&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;text-indent: 21.75pt;&quot;&gt;&lt;span&gt;&lt;span&gt;       &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;     &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;text-indent: 21.75pt;&quot;&gt;&lt;span&gt;&lt;span&gt;       &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;     &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;            &lt;/span&gt;var report=document.getElementById(&amp;#8220;form1_F2&amp;#8243;);//&lt;/span&gt;&lt;span&gt;获取单元格对象&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;text-indent: 21.75pt;&quot;&gt;&lt;span&gt;&lt;span&gt;       &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;     &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;            &lt;/span&gt;var report1=document.getElementById(&amp;#8220;form1_F3&amp;#8243;);&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;text-indent: 21.75pt;&quot;&gt;&lt;span&gt;&lt;span&gt;       &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;     &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;            &lt;/span&gt;var report2=document.getElementById(&amp;#8220;form1_F4&amp;#8243;);&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;text-indent: 21.75pt;&quot;&gt;&lt;span&gt;&lt;span&gt;       &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;     &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;            &lt;/span&gt;var report3=document.getElementById(&amp;#8220;form1_E2&amp;#8243;);&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;text-indent: 21.75pt;&quot;&gt;&lt;span&gt;&lt;span&gt;       &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;     &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;            &lt;/span&gt;var report4=document.getElementById(&amp;#8220;form1_E3&amp;#8243;);&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;text-indent: 21.75pt;&quot;&gt;&lt;span&gt;&lt;span&gt;       &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;     &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;            &lt;/span&gt;var report5=document.getElementById(&amp;#8220;form1_E4&amp;#8243;);&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;text-indent: 21.75pt;&quot;&gt;&lt;span&gt;&lt;span&gt;       &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;     &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;text-indent: 21.75pt;&quot;&gt;&lt;span&gt;&lt;span&gt;       &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;     &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;     &lt;/span&gt;//&lt;span&gt;     &lt;/span&gt;report.style.backgroundColor=&amp;#8221;#FF0000&amp;#8243;;//&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;text-indent: 21.75pt;&quot;&gt;&lt;span&gt;&lt;span&gt;       &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;     &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;            &lt;/span&gt;//alert(report.innerText);&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;text-indent: 21.75pt;&quot;&gt;&lt;span&gt;&lt;span&gt;       &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;     &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;            &lt;/span&gt;if(arg1==7){&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;text-indent: 21.75pt;&quot;&gt;&lt;span&gt;&lt;span&gt;       &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;     &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;                   &lt;/span&gt;report3.innerText=&amp;#8221;&quot;;//&lt;/span&gt;&lt;span&gt;设置单元格显示值&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;text-indent: 21.75pt;&quot;&gt;&lt;span&gt;&lt;span&gt;       &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;     &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;                   &lt;/span&gt;report4.innerText=&amp;#8221;&lt;/span&gt;&lt;span&gt;起始日期&lt;/span&gt;&lt;span&gt;&amp;#8220;;&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;text-indent: 21.75pt;&quot;&gt;&lt;span&gt;&lt;span&gt;       &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;     &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;                   &lt;/span&gt;report5.innerText=&amp;#8221;&lt;/span&gt;&lt;span&gt;结束日期&lt;/span&gt;&lt;span&gt;&amp;#8220;;&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;text-indent: 21.75pt;&quot;&gt;&lt;span&gt;&lt;span&gt;       &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;     &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;     &lt;/span&gt;report.style.display = &amp;#8220;none&amp;#8221;;//&lt;/span&gt;&lt;span&gt;控制隐藏&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;text-indent: 21.75pt;&quot;&gt;&lt;span&gt;&lt;span&gt;       &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;     &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;     &lt;/span&gt;report1.style.display = &amp;#8220;block&amp;#8221;;&lt;span&gt;  &lt;/span&gt;//&lt;/span&gt;&lt;span&gt;控制显示&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;text-indent: 21.75pt;&quot;&gt;&lt;span&gt;&lt;span&gt;       &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;     &lt;/span&gt;&lt;span&gt;  &lt;/span&gt;report2.style.display = &amp;#8220;block&amp;#8221;;&lt;span&gt;  &lt;/span&gt;//&lt;/span&gt;&lt;span&gt;显示&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;text-indent: 21.75pt;&quot;&gt;&lt;span&gt;&lt;span&gt;       &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;     &lt;/span&gt;}&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;text-indent: 21.75pt;&quot;&gt;&lt;span&gt;&lt;span&gt;       &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;     &lt;/span&gt;else{&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;text-indent: 21.75pt;&quot;&gt;&lt;span&gt;&lt;span&gt;       &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;            &lt;/span&gt;report3.innerText=&amp;#8221;&lt;/span&gt;&lt;span&gt;日期&lt;/span&gt;&lt;span&gt;&amp;#8220;;&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;text-indent: 21.75pt;&quot;&gt;&lt;span&gt;&lt;span&gt;       &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;            &lt;/span&gt;report4.innerText=&amp;#8221;&quot;;&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;text-indent: 21.75pt;&quot;&gt;&lt;span&gt;&lt;span&gt;       &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;     &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;     &lt;/span&gt;report5.innerText=&amp;#8221;&quot;;&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;text-indent: 21.75pt;&quot;&gt;&lt;span&gt;&lt;span&gt;              &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;     &lt;/span&gt;report.style.display = &amp;#8220;block&amp;#8221;;//&lt;/span&gt;&lt;span&gt;隐藏&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;text-indent: 21.75pt;&quot;&gt;&lt;span&gt;&lt;span&gt;       &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;     &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;     &lt;/span&gt;report1.style.display = &amp;#8220;none&amp;#8221;;&lt;span&gt;  &lt;/span&gt;//&lt;/span&gt;&lt;span&gt;显示&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;text-indent: 21.75pt;&quot;&gt;&lt;span&gt;&lt;span&gt;       &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;     &lt;/span&gt;&lt;span&gt;  &lt;/span&gt;report2.style.display = &amp;#8220;none&amp;#8221;;&lt;span&gt;  &lt;/span&gt;//&lt;/span&gt;&lt;span&gt;显示&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;text-indent: 21.75pt;&quot;&gt;  &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;text-indent: 21.75pt;&quot;&gt;&lt;span&gt;&lt;span&gt;       &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;     &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;     &lt;/span&gt;}&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;text-indent: 21.75pt;&quot;&gt;&lt;span&gt;&lt;span&gt;       &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;     &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;     &lt;/span&gt;&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;text-indent: 21.75pt;&quot;&gt;  &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;text-indent: 21.75pt;&quot;&gt;&lt;span&gt;&lt;span&gt;       &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;     &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;            &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;     &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;            &lt;/span&gt;}&lt;/span&gt; &lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;text-indent: 21.75pt;&quot;&gt;&lt;span&gt;在该&lt;/span&gt;&lt;span&gt;js&lt;/span&gt;&lt;span&gt;函数中先获得要更改的单元格对象，然后通过该单元格的相关属性就能控制单元格是隐藏还是显示，这样就能达到动态更改参数输入框的要求。&lt;/span&gt; &lt;br /&gt;
&lt;!-- keywords:报表设计,报表制作,Java报表,报表工具,web报表,参数表单,动态设置,动态参 --&gt;&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/614700387/quiee/feedsky/s.gif?r=http://www.quiee.com.cn/archives/2580&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</content:encoded><wfw:commentRss>http://www.quiee.com.cn/archives/2580/feed</wfw:commentRss><slash:comments>0</slash:comments><description>用户可通过快逸的参数表单对报表结果进行查询，在选择条件时要求能够动态更改参数的输入。

...&lt;img src=&quot;http://www1.feedsky.com/t1/614700387/quiee/feedsky/s.gif?r=http://www.quiee.com.cn/archives/2580&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>设计基础</category><category>参数表单</category><category>动态设置</category><category>动态参数</category><pubDate>Fri, 12 Aug 2011 16:38:23 +0800</pubDate><author>ROS</author><comments>http://www.quiee.com.cn/archives/2580#comments</comments><guid isPermaLink="false">http://www.quiee.com.cn/archives/2580</guid><dc:creator>ROS</dc:creator><fs:srclink>http://www.quiee.com.cn/archives/2580</fs:srclink><fs:srcfeed>http://www.quiee.com.cn/feed</fs:srcfeed><fs:itemid>feedsky/quiee/~7132717/614700387/5241428</fs:itemid></item></channel></rss>
