﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-Java报表工具-随笔分类-Java报表—技术知识</title><link>http://www.blogjava.net/echoseason/category/30798.html</link><description>关注java报表工具 报表制作 </description><language>zh-cn</language><lastBuildDate>Mon, 18 May 2015 07:55:01 GMT</lastBuildDate><pubDate>Mon, 18 May 2015 07:55:01 GMT</pubDate><ttl>60</ttl><item><title>统计图表FineReport聚合报表</title><link>http://www.blogjava.net/echoseason/archive/2015/05/18/425136.html</link><dc:creator>season</dc:creator><author>season</author><pubDate>Mon, 18 May 2015 06:24:00 GMT</pubDate><guid>http://www.blogjava.net/echoseason/archive/2015/05/18/425136.html</guid><wfw:comment>http://www.blogjava.net/echoseason/comments/425136.html</wfw:comment><comments>http://www.blogjava.net/echoseason/archive/2015/05/18/425136.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/echoseason/comments/commentRss/425136.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/echoseason/services/trackbacks/425136.html</trackback:ping><description><![CDATA[<div><a href="http://www.finereport.com/knowledge/chart">统计图表</a>FineReport聚合报表<br /><a name="a:1." style="font-family: 微软雅黑; font-size: medium; line-height: 22px;"><div style="font-weight: bold; font-size: 16px; color: #383838; line-height: 11px; margin-top: 20px; margin-bottom: 16px;">1.&nbsp;问题描述</div></a><div style="color: #383838; text-indent: 22px; text-align: justify; margin-top: 5px; margin-bottom: 5px; font-family: 微软雅黑; line-height: 22px;">使用嵌入式主子表制作模板，如果子报表比较大，不止一页，这时嵌入到主报表中只能显示部分（嵌入式的子报表只能在固定大小的区域中显示，不能自动扩展），怎么能显示其余页的数据呢？或者两个扩展的单元格怎样设置互补影响呢？这时就可以使用聚合报表来实现，如下图聚合报表实现效果：</div><div style="color: #383838; text-indent: 22px; text-align: justify; margin-top: 5px; margin-bottom: 5px; font-family: 微软雅黑; line-height: 22px;"><img src="http://www.finereporthelp.com/help/9/3-1.gif" style="padding: 10px 0px 5px;"  alt="" /></div><a name="a:2." style="font-family: 微软雅黑; font-size: medium; line-height: 22px;"><div style="font-weight: bold; font-size: 16px; color: #383838; line-height: 11px; margin-top: 20px; margin-bottom: 16px;">2.&nbsp;示例</div></a><a name="a:2.1" style="font-family: 微软雅黑; font-size: medium; line-height: 22px;"><div style="font-weight: bold; font-size: 15px; color: #383838; margin-top: 11px; margin-bottom: 11px;">2.1&nbsp;聚合块自动扩展位置大小</div></a><div style="color: #383838; text-indent: 22px; text-align: justify; margin-top: 5px; margin-bottom: 5px; font-family: 微软雅黑; line-height: 22px;">添加聚合模板，拖动数据表字段，设计表中样式等，模块大小不用固定可跟设计模板大小相同即可，如下图：</div><div style="color: #383838; text-indent: 22px; text-align: justify; margin-top: 5px; margin-bottom: 5px; font-family: 微软雅黑; line-height: 22px;"><img src="http://www.finereporthelp.com/help/9/3-2.gif" style="padding: 10px 0px 5px;"  alt="" /></div><div style="color: #383838; text-indent: 22px; text-align: justify; margin-top: 5px; margin-bottom: 5px; font-family: 微软雅黑; line-height: 22px;">预览模板聚合块自动扩展数据，超过一页大小，以分页的方式显示，如下图。</div><div style="color: #383838; text-indent: 22px; text-align: justify; margin-top: 5px; margin-bottom: 5px; font-family: 微软雅黑; line-height: 22px;"><img src="http://www.finereporthelp.com/help/9/3-3.gif" style="padding: 10px 0px 5px;"  alt="" /></div><a name="a:2.2" style="font-family: 微软雅黑; font-size: medium; line-height: 22px;"><div style="font-weight: bold; font-size: 15px; color: #383838; margin-top: 11px; margin-bottom: 11px;">2.2&nbsp;聚合块扩展互不影响</div></a><div style="color: #383838; text-indent: 22px; text-align: justify; margin-top: 5px; margin-bottom: 5px; font-family: 微软雅黑; line-height: 22px;">设置固定格式表头，不需要受到扩展数据的影响，这时就两个聚合块，一个设表头格式，另一个就是展示扩展数据，两个聚合块相互独立，如下图设置效果：</div><div style="color: #383838; text-indent: 22px; text-align: justify; margin-top: 5px; margin-bottom: 5px; font-family: 微软雅黑; line-height: 22px;"><img src="http://www.finereporthelp.com/help/9/3-4.gif" style="padding: 10px 0px 5px;"  alt="" /></div><a name="a:2.3" style="font-family: 微软雅黑; font-size: medium; line-height: 22px;"><div style="font-weight: bold; font-size: 15px; color: #383838; margin-top: 11px; margin-bottom: 11px;">2.3&nbsp;数据分析预览聚合报表</div></a><div style="color: #383838; text-indent: 22px; text-align: justify; margin-top: 5px; margin-bottom: 5px; font-family: 微软雅黑; line-height: 22px;">已完成模板可参照<span style="font-weight: bold; color: #8b008b;">%FR_HOME%\WebReport\WEB-INF\reportlets\doc\Advanced\polybook.cpt</span>。模板效果在线查看请点击polybook.cpt</div><div style="color: #383838; text-indent: 22px; text-align: justify; margin-top: 5px; margin-bottom: 5px; font-family: 微软雅黑; line-height: 22px;">如果只希望内容在一页显示完全，则可以点击设计器右上角上面的数据分析预览，即预览模板时在后面加上参数<span style="font-weight: bold; color: #0000ff;">&amp;op=view</span>，则可看到文档中第一张图的效果。</div></div><img src ="http://www.blogjava.net/echoseason/aggbug/425136.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/echoseason/" target="_blank">season</a> 2015-05-18 14:24 <a href="http://www.blogjava.net/echoseason/archive/2015/05/18/425136.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>图表制作FineReport 连接池原理</title><link>http://www.blogjava.net/echoseason/archive/2015/05/18/425133.html</link><dc:creator>season</dc:creator><author>season</author><pubDate>Mon, 18 May 2015 02:40:00 GMT</pubDate><guid>http://www.blogjava.net/echoseason/archive/2015/05/18/425133.html</guid><wfw:comment>http://www.blogjava.net/echoseason/comments/425133.html</wfw:comment><comments>http://www.blogjava.net/echoseason/archive/2015/05/18/425133.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/echoseason/comments/commentRss/425133.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/echoseason/services/trackbacks/425133.html</trackback:ping><description><![CDATA[<div style="text-align: center; "><a href="http://www.finereport.com/knowledge/chart">图表制作</a>FineReport 连接池原理<br /><div style="text-align: left;"><div style="color: #383838; text-indent: 22px; text-align: justify; margin-top: 5px; margin-bottom: 5px; font-family: 微软雅黑; line-height: 22px;">连接池主要由三部分组成：连接池的建立、连接池中连接使用的治理、连接池的关闭。下面就着重讨论这三部分及连接池的配置问题。</div><a name="a:1." style="font-family: 微软雅黑; font-size: medium; line-height: 22px;"><div style="font-weight: bold; font-size: 16px; color: #383838; line-height: 11px; margin-top: 20px; margin-bottom: 16px;">1.&nbsp;连接池原理</div></a><div style="color: #383838; text-indent: 22px; text-align: justify; margin-top: 5px; margin-bottom: 5px; font-family: 微软雅黑; line-height: 22px;">连接池技术的核心思想，是连接复用，通过建立一个数据库连接池以及一套连接使用、分配、治理策略，使得该连接池中的连接可以得到高效、安全的复用，避免了数据库连接频繁建立、关闭的开销。</div><div style="color: #383838; text-indent: 22px; text-align: justify; margin-top: 5px; margin-bottom: 5px; font-family: 微软雅黑; line-height: 22px;">另外，由于对JDBC中的原始连接进行了封装，从而方便了数据库应用对于连接的使用（特别是对于事务处理），提高了开发效率，也正是因为这个封装层的存在，隔离了应用的本身的处理逻辑和具体数据库访问逻辑，使应用本身的复用成为可能。</div><div style="color: #383838; text-indent: 22px; text-align: justify; margin-top: 5px; margin-bottom: 5px; font-family: 微软雅黑; line-height: 22px;"></div><a name="a:1.1" style="font-family: 微软雅黑; font-size: medium; line-height: 22px;"><div style="font-weight: bold; font-size: 15px; color: #383838; margin-top: 11px; margin-bottom: 11px;">1.1&nbsp;连接池的建立</div></a><div style="color: #383838; text-indent: 22px; text-align: justify; margin-top: 5px; margin-bottom: 5px; font-family: 微软雅黑; line-height: 22px;">应用程序中建立的连接池其实是一个静态的。所谓静态连接池是指连接池中的连接在系统初始化时就已分配好，且不能随意关闭连接。Java中提供了很多容器类可以方便的构建连接池，如：Vector、Stack、Servlet、Bean等，通过读取连接属性文件Connections.properties与数据库实例建立连接。在系统初始化时，根据相应的配置创建连接并放置在连接池中，以便需要使用时能从连接池中获取，这样就可以避免连接随意的建立、关闭造成的开销。</div><a name="a:1.2" style="font-family: 微软雅黑; font-size: medium; line-height: 22px;"><div style="font-weight: bold; font-size: 15px; color: #383838; margin-top: 11px; margin-bottom: 11px;">1.2&nbsp;连接池的治理</div></a><div style="color: #383838; text-indent: 22px; text-align: justify; margin-top: 5px; margin-bottom: 5px; font-family: 微软雅黑; line-height: 22px;">连接池治理策略是连接池机制的核心。当连接池建立后，如何对连接池中的连接进行治理，解决好连接池内连接的分配和释放，对系统的性能有很大的影响。连接的合理分配、释放可提高连接的复用，降低了系统建立新连接的开销，同时也加速了用户的访问速度。下面介绍连接池中连接的分配、释放策略。</div><div style="color: #383838; text-indent: 22px; text-align: justify; margin-top: 5px; margin-bottom: 5px; font-family: 微软雅黑; line-height: 22px;">连接池的分配、释放策略对于有效复用连接非常重要，我们采用的方法是一个很有名的设计模式：Reference Counting（引用记数）。该模式在复用资源方面应用的非常广泛，把该方法运用到对于连接的分配释放上，为每一个数据库连接，保留一个引用记数，用来记录该连接的使用者的个数。</div><a name="a:1.3" style="font-family: 微软雅黑; font-size: medium; line-height: 22px;"><div style="font-weight: bold; font-size: 15px; color: #383838; margin-top: 11px; margin-bottom: 11px;">1.3&nbsp;连接池的关闭</div></a><div style="color: #383838; text-indent: 22px; text-align: justify; margin-top: 5px; margin-bottom: 5px; font-family: 微软雅黑; line-height: 22px;">当应用程序退出时，应关闭连接池，此时应把在连接池建立时向数据库申请的连接对象统一归还给数据库（即关闭所有数据库连接），这与连接池的建立正好是一个相反过程。</div><div style="color: #383838; text-indent: 22px; text-align: justify; margin-top: 5px; margin-bottom: 5px; font-family: 微软雅黑; line-height: 22px;">连接池分配一个连接后如定义一个数据集，点击预览，执行完对应的sql语句会将所占用的连接归还连接池。</div><a name="a:2." style="font-family: 微软雅黑; font-size: medium; line-height: 22px;"><div style="font-weight: bold; font-size: 16px; color: #383838; line-height: 11px; margin-top: 20px; margin-bottom: 16px;">2.&nbsp;连接池的配置</div></a><div style="color: #383838; text-indent: 22px; text-align: justify; margin-top: 5px; margin-bottom: 5px; font-family: 微软雅黑; line-height: 22px;">数据库连接池中到底要放置多少个连接，才能使系统的性能更佳，用minConn和maxConn来限制。</div><div style="color: #383838; text-indent: 22px; text-align: justify; margin-top: 5px; margin-bottom: 5px; font-family: 微软雅黑; line-height: 22px;">minConn是当应用启动的时候连接池所创建的连接数，假如过大启动将变慢，但是启动后响应更快；假如过小启动加快，但是最初使用的用户将因为连接池中没有足够的连接不可避免的延缓了执行速度。因此应该在开发的过程中设定较小minConn，而在实际应用的中设定较大minConn。maxConn是连接池中的最大连接数，可以通过反复试验来确定此饱和点。</div><div style="color: #383838; text-indent: 22px; text-align: justify; margin-top: 5px; margin-bottom: 5px; font-family: 微软雅黑; line-height: 22px;">为此在连接池类ConnectionPool中加入两个方法getActiveSize（）和getOpenSize（），ActiveSize 表示某一时间有多少连接正被使用，OpenSize表示连接池中有多少连接被打开，反映了连接池使用的峰值。将这两个值在日志信息中反应出来， minConn的值应该小于平均ActiveSize，而maxConn的值应该在activeSize和OpenSize之间。</div></div></div><img src ="http://www.blogjava.net/echoseason/aggbug/425133.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/echoseason/" target="_blank">season</a> 2015-05-18 10:40 <a href="http://www.blogjava.net/echoseason/archive/2015/05/18/425133.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java报表开发FineReport Excel双向导入</title><link>http://www.blogjava.net/echoseason/archive/2015/05/12/425017.html</link><dc:creator>season</dc:creator><author>season</author><pubDate>Tue, 12 May 2015 05:59:00 GMT</pubDate><guid>http://www.blogjava.net/echoseason/archive/2015/05/12/425017.html</guid><wfw:comment>http://www.blogjava.net/echoseason/comments/425017.html</wfw:comment><comments>http://www.blogjava.net/echoseason/archive/2015/05/12/425017.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/echoseason/comments/commentRss/425017.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/echoseason/services/trackbacks/425017.html</trackback:ping><description><![CDATA[<div><strong style="font-size: 14pt;"><a href="http://www.finereport.com/">java报表开发</a>FineReport Excel双向导入<br /></strong><a name="a:1." style="font-family: 微软雅黑; font-size: medium; line-height: 22px;"><div class="doc_h1" style="font-weight: bold; font-size: 16px; color: #383838; line-height: 11px; margin-top: 20px; margin-bottom: 16px;">1.&nbsp;描述</div></a><div class="doc_description" style="color: #383838; text-indent: 22px; text-align: justify; margin-top: 5px; margin-bottom: 5px; font-family: 微软雅黑; line-height: 22px;">Excel双向导入是指标题行列是从单元格扩展得到的，并将导入数据的单元格也是可扩展的，如下图所示效果，标题字段通过横向扩展得到，导入数据的单元格纵向扩展，导入不定行数据：</div><div class="doc_description" style="color: #383838; text-indent: 22px; text-align: justify; margin-top: 5px; margin-bottom: 5px; font-family: 微软雅黑; line-height: 22px;"><img src="http://www.finereporthelp.com/help/13/29/1/3-1.png" style="padding: 10px 0px 5px;"  alt="" /></div><div class="doc_description" style="color: #383838; text-indent: 22px; text-align: justify; margin-top: 5px; margin-bottom: 5px; font-family: 微软雅黑; line-height: 22px;">Excel双向导入模板在web端填报预览打开之后，其展示效果与固定标题行导入不定行是一样的，那么双向导入的逻辑仍然是首先根据标题匹配，如果标题匹配不上或者只有一个可以匹配上或者设置了不执行根据标题匹配，则执行根据位置匹配。</div><a name="a:2." style="font-family: 微软雅黑; font-size: medium; line-height: 22px;"><div class="doc_h1" style="font-weight: bold; font-size: 16px; color: #383838; line-height: 11px; margin-top: 20px; margin-bottom: 16px;">2.&nbsp;示例</div></a><a name="a:2.1" style="font-family: 微软雅黑; font-size: medium; line-height: 22px;"><div class="doc_h2" style="font-weight: bold; font-size: 15px; color: #383838; margin-top: 11px; margin-bottom: 11px;">2.1&nbsp;模板准备</div></a><div class="doc_description" style="color: #383838; text-indent: 22px; text-align: justify; margin-top: 5px; margin-bottom: 5px; font-family: 微软雅黑; line-height: 22px;">新建一个模板，添加<span class="doc_navigation" style="font-weight: bold; color: #008080;">内置数据集</span>，该数据集中只有一列数据，存储的是<span class="doc_formula" style="font-weight: bold; color: #0000ff;">产品表</span>中的字段名称，如下图：</div><div class="doc_description" style="color: #383838; text-indent: 22px; text-align: justify; margin-top: 5px; margin-bottom: 5px; font-family: 微软雅黑; line-height: 22px;"><img src="http://www.finereporthelp.com/help/13/29/1/3-2.png" style="padding: 10px 0px 5px;"  alt="" /></div><div class="doc_description" style="color: #383838; text-indent: 22px; text-align: justify; margin-top: 5px; margin-bottom: 5px; font-family: 微软雅黑; line-height: 22px;">内置数据集准备好之后，将<span class="doc_formula" style="font-weight: bold; color: #0000ff;">字段名称</span>数据列拖曳到A2单元格中，设置为横向扩展，并将A3单元格设置为纵向扩展，如下图：</div><div class="doc_description" style="color: #383838; text-indent: 22px; text-align: justify; margin-top: 5px; margin-bottom: 5px; font-family: 微软雅黑; line-height: 22px;"><img src="http://www.finereporthelp.com/help/13/29/1/3-3.png" style="padding: 10px 0px 5px;"  alt="" /></div><a name="a:2.2" style="font-family: 微软雅黑; font-size: medium; line-height: 22px;"><div class="doc_h2" style="font-weight: bold; font-size: 15px; color: #383838; margin-top: 11px; margin-bottom: 11px;">2.2&nbsp;工具栏设置</div></a><div class="doc_description" style="color: #383838; text-indent: 22px; text-align: justify; margin-top: 5px; margin-bottom: 5px; font-family: 微软雅黑; line-height: 22px;">默认填报工具栏是没有导入Excel按钮的，点击<span class="doc_navigation" style="font-weight: bold; color: #008080;">模板&gt;模板web属性&gt;填报页面设置</span>，<span class="doc_navigation" style="font-weight: bold; color: #008080;">为该模板单独设置</span>，勾选<span class="doc_navigation" style="font-weight: bold; color: #008080;">使用工具栏</span>，为该报表单独设置工具栏，清空工具栏，然后在按钮面板中双击<span class="doc_navigation" style="font-weight: bold; color: #008080;">提交</span>按钮和<span class="doc_navigation" style="font-weight: bold; color: #008080;">导入excel</span>按钮，将这两个按钮添加到顶部工具栏中，与<span class="doc_formula" style="font-weight: bold; color: #0000ff;">根据位置匹配示例</span>中的设置相同。</div><a name="a:2.3" style="font-family: 微软雅黑; font-size: medium; line-height: 22px;"><div class="doc_h2" style="font-weight: bold; font-size: 15px; color: #383838; margin-top: 11px; margin-bottom: 11px;">2.3&nbsp;配置文件修改</div></a><div class="doc_description" style="color: #383838; text-indent: 22px; text-align: justify; margin-top: 5px; margin-bottom: 5px; font-family: 微软雅黑; line-height: 22px;">FineReport默认不开启双向导入，故，如果要使用双向导入，首先要先修改配置文件，使其开启双向导入。</div><div class="doc_description" style="color: #383838; text-indent: 22px; text-align: justify; margin-top: 5px; margin-bottom: 5px; font-family: 微软雅黑; line-height: 22px;">打开<span class="doc_dir" style="font-weight: bold; color: #8b008b;">%FR_HOME%\WebReport\WEB-INF\resources</span>下面的<span class="doc_formula" style="font-weight: bold; color: #0000ff;">customconfig.xml</span>文件，如果没有该文件，则复制<span class="doc_formula" style="font-weight: bold; color: #0000ff;">config.xml</span>至该文件夹中，并重命名为<span class="doc_formula" style="font-weight: bold; color: #0000ff;">customconfig.xml</span>，如下图：</div><div class="doc_description" style="color: #383838; text-indent: 22px; text-align: justify; margin-top: 5px; margin-bottom: 5px; font-family: 微软雅黑; line-height: 22px;"><img src="http://www.finereporthelp.com/help/13/29/1/3-4.png" style="padding: 10px 0px 5px;"  alt="" /></div><div class="doc_description" style="color: #383838; text-indent: 22px; text-align: justify; margin-top: 5px; margin-bottom: 5px; font-family: 微软雅黑; line-height: 22px;">在<span class="doc_formula" style="font-weight: bold; color: #0000ff;">customconfig.xml</span>文件最后面的<span class="doc_formula" style="font-weight: bold; color: #0000ff;">&lt;/ReportServerParameter&gt;</span>标签之前插入<span class="doc_formula" style="font-weight: bold; color: #0000ff;">&lt;ImportDoubleDir doubledir = "true"/&gt;</span>，表示开启双向导入，如下图：</div><div class="doc_description" style="color: #383838; text-indent: 22px; text-align: justify; margin-top: 5px; margin-bottom: 5px; font-family: 微软雅黑; line-height: 22px;"><img src="http://www.finereporthelp.com/help/13/29/1/3-5.png" style="padding: 10px 0px 5px;"  alt="" /></div><a name="a:2.4" style="font-family: 微软雅黑; font-size: medium; line-height: 22px;"><div class="doc_h2" style="font-weight: bold; font-size: 15px; color: #383838; margin-top: 11px; margin-bottom: 11px;">2.4&nbsp;Excel导入</div></a><div class="doc_description" style="color: #383838; text-indent: 22px; text-align: justify; margin-top: 5px; margin-bottom: 5px; font-family: 微软雅黑; line-height: 22px;">点击<span class="doc_navigation" style="font-weight: bold; color: #008080;">填报预览</span>按钮，在web端预览报表，可以看到标题字段是扩展出来的，点击工具栏上的<span class="doc_navigation" style="font-weight: bold; color: #008080;">导入Excel</span>按钮，选择excelimport.xls，可以看到如下图所示效果：</div><div class="doc_description" style="color: #383838; text-indent: 22px; text-align: justify; margin-top: 5px; margin-bottom: 5px; font-family: 微软雅黑; line-height: 22px;"><img src="http://www.finereporthelp.com/help/13/29/1/3-6.gif" style="padding: 10px 0px 5px;"  alt="" /></div><div class="doc_description" style="color: #383838; text-indent: 22px; text-align: justify; margin-top: 5px; margin-bottom: 5px; font-family: 微软雅黑; line-height: 22px;">已完成模板请参照<span class="doc_dir" style="font-weight: bold; color: #8b008b;">%FR_HOME%\WebReport\WEB-INF\reportlets\doc\SpecialSubject|\ExcelImport\ExcelImport_5.cpt。</span></div><strong style="font-size: 14pt;"><br /></strong></div><img src ="http://www.blogjava.net/echoseason/aggbug/425017.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/echoseason/" target="_blank">season</a> 2015-05-12 13:59 <a href="http://www.blogjava.net/echoseason/archive/2015/05/12/425017.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>统计图表FineReport之SQL函数</title><link>http://www.blogjava.net/echoseason/archive/2015/05/11/424996.html</link><dc:creator>season</dc:creator><author>season</author><pubDate>Mon, 11 May 2015 09:17:00 GMT</pubDate><guid>http://www.blogjava.net/echoseason/archive/2015/05/11/424996.html</guid><wfw:comment>http://www.blogjava.net/echoseason/comments/424996.html</wfw:comment><comments>http://www.blogjava.net/echoseason/archive/2015/05/11/424996.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/echoseason/comments/commentRss/424996.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/echoseason/services/trackbacks/424996.html</trackback:ping><description><![CDATA[<span style="font-size: 12px;"><strong><a href="http://www.finereport.com/knowledge/chart">统计图表</a>FineReport之SQL函数</strong><br /><br /></span><div style="color: #383838; text-indent: 22px; text-align: justify; margin-top: 5px; margin-bottom: 5px; font-family: 微软雅黑; line-height: 22px;">有的时候希望某个单元格能够直接获取到数据库中的某个值，而不是先要定义一个数据集后，再去取数据。这时就可以用函数Sql()公式，下面讲解下其用法。</div><a name="a:1." style="font-family: 微软雅黑; font-size: medium; line-height: 22px;"><div style="font-weight: bold; font-size: 16px; color: #383838; line-height: 11px; margin-top: 20px; margin-bottom: 16px;">1.&nbsp;公式解释</div></a><div style="color: #383838; text-indent: 22px; text-align: justify; margin-top: 5px; margin-bottom: 5px; font-family: 微软雅黑; line-height: 22px;">SQL(connectionName,sql,columnIndex,rowIndex)：返回的数据是从connectionName数据库中获取的sql语句的表中的第columnIndex列第rowIndex行所对应的元素。</div><div style="color: #383838; text-indent: 22px; text-align: justify; margin-top: 5px; margin-bottom: 5px; font-family: 微软雅黑; line-height: 22px;">connectionName：数据库名，字符串形式，需要用引号如"FRDemo"；</div><div style="color: #383838; text-indent: 22px; text-align: justify; margin-top: 5px; margin-bottom: 5px; font-family: 微软雅黑; line-height: 22px;">sql：SQL语句，字符串形式；</div><div style="color: #383838; text-indent: 22px; text-align: justify; margin-top: 5px; margin-bottom: 5px; font-family: 微软雅黑; line-height: 22px;">columnIndex：列序号，整型；</div><div style="color: #383838; text-indent: 22px; text-align: justify; margin-top: 5px; margin-bottom: 5px; font-family: 微软雅黑; line-height: 22px;">rowIndex：行序号，整型。</div><div style="color: #383838; text-indent: 22px; text-align: justify; margin-top: 5px; margin-bottom: 5px; font-family: 微软雅黑; line-height: 22px;"><span style="color: red;">备注：行序号可以不写，这样返回值为数据列。</span></div><a name="a:2." style="font-family: 微软雅黑; font-size: medium; line-height: 22px;"><div style="font-weight: bold; font-size: 16px; color: #383838; line-height: 11px; margin-top: 20px; margin-bottom: 16px;">2.&nbsp;以我们提供的数据源FRDemo为例</div></a><a name="a:2.1" style="font-family: 微软雅黑; font-size: medium; line-height: 22px;"><div style="font-weight: bold; font-size: 15px; color: #383838; margin-top: 11px; margin-bottom: 11px;">2.1&nbsp;示例（就一般的只获取某个字段内容）</div></a><div style="color: #383838; text-indent: 22px; text-align: justify; margin-top: 5px; margin-bottom: 5px; font-family: 微软雅黑; line-height: 22px;">从表 STSCORE中，我们可看到第3行第3列的值为Alex，如下：</div><div style="color: #383838; text-indent: 22px; text-align: justify; margin-top: 5px; margin-bottom: 5px; font-family: 微软雅黑; line-height: 22px;"><img src="http://www.finereporthelp.com/help/13/31/1/1-1.png" style="padding: 10px 0px 5px;"  alt="" /></div><div style="color: #383838; text-indent: 22px; text-align: justify; margin-top: 5px; margin-bottom: 5px; font-family: 微软雅黑; line-height: 22px;">现在若要直接在报表的单元格中显示数据值：Alex，而不通过先定义一个数据集后，再去取数据的方式，这里就可以使用sql()公式，此时只需在单元格中输入：<span style="font-weight: bold; color: #5f9ea0;">=sql("FRDemo","SELECT * FROM STSCORE",3,3)</span>即可，预览就可看到Alex值。</div><a name="a:2.2" style="font-family: 微软雅黑; font-size: medium; line-height: 22px;"><div style="font-weight: bold; font-size: 15px; color: #383838; margin-top: 11px; margin-bottom: 11px;">2.2&nbsp;示例（带有参数时公式的使用）</div></a><div style="color: #383838; text-indent: 22px; text-align: justify; margin-top: 5px; margin-bottom: 5px; font-family: 微软雅黑; line-height: 22px;">带有参数形式的时候，直接在报表的单元格中获取数据值，写法如下：</div><div style="color: #383838; text-indent: 22px; text-align: justify; margin-top: 5px; margin-bottom: 5px; font-family: 微软雅黑; line-height: 22px;"><span style="font-weight: bold; color: #5f9ea0;">=sql("FRDemo","SELECT * FROM STSCORE where CLASSNO = 'Class1' ",3)</span></div><div style="color: #383838; text-indent: 22px; text-align: justify; margin-top: 5px; margin-bottom: 5px; font-family: 微软雅黑; line-height: 22px;">显示效果（班级为Class1的第3列所有值），如下：</div><div style="color: #383838; text-indent: 22px; text-align: justify; margin-top: 5px; margin-bottom: 5px; font-family: 微软雅黑; line-height: 22px;"><img src="http://www.finereporthelp.com/help/13/31/1/1-2.png" style="padding: 10px 0px 5px;"  alt="" /></div><div style="color: #383838; text-indent: 22px; text-align: justify; margin-top: 5px; margin-bottom: 5px; font-family: 微软雅黑; line-height: 22px;">若需要显示某个具体值，如：显示 Jonny 的效果（即班级为Class1的第3列第4行的值），写法如下：</div><div style="color: #383838; text-indent: 22px; text-align: justify; margin-top: 5px; margin-bottom: 5px; font-family: 微软雅黑; line-height: 22px;"><span style="font-weight: bold; color: #5f9ea0;">=sql("FRDemo","SELECT * FROM STSCORE where CLASSNO = 'Class1' ",3,4)</span></div><div style="color: #383838; text-indent: 22px; text-align: justify; margin-top: 5px; margin-bottom: 5px; font-family: 微软雅黑; line-height: 22px;">若参数值为变量如为报表参数或者是某个单元格，则写法如下：</div><div style="color: #383838; text-indent: 22px; text-align: justify; margin-top: 5px; margin-bottom: 5px; font-family: 微软雅黑; line-height: 22px;"><span style="font-weight: bold; color: #5f9ea0;">=sql("FRDemo","SELECT * FROM STSCORE where CLASSNO = '"+$class+"' ",3,4)</span></div><div style="color: #383838; text-indent: 22px; text-align: justify; margin-top: 5px; margin-bottom: 5px; font-family: 微软雅黑; line-height: 22px;">或</div><div style="color: #383838; text-indent: 22px; text-align: justify; margin-top: 5px; margin-bottom: 5px; font-family: 微软雅黑; line-height: 22px;"><span style="font-weight: bold; color: #5f9ea0;">=sql("FRDemo","SELECT * FROM STSCORE where CLASSNO = '"+A1+"' ",3,4)</span></div><div style="color: #383838; text-indent: 22px; text-align: justify; margin-top: 5px; margin-bottom: 5px; font-family: 微软雅黑; line-height: 22px;"><span style="color: red;">如果传递的参数是获取当前单元格的值，即用$$$作为参数时，字符串类型同样需要拼接单引号，如下：</span></div><div style="color: #383838; text-indent: 22px; text-align: justify; margin-top: 5px; margin-bottom: 5px; font-family: 微软雅黑; line-height: 22px;"><span style="font-weight: bold; color: #5f9ea0;">=sql("FRDemo","SELECT * FROM STSCORE where CLASSNO = '"+$$$+"' ",3,4)</span></div><div style="color: #383838; text-indent: 22px; text-align: justify; margin-top: 5px; margin-bottom: 5px; font-family: 微软雅黑; line-height: 22px;"><span style="color: red;">注：如果参数或者单元格值有多个，那么sql函数的写法如下：</span></div><div style="color: #383838; text-indent: 22px; text-align: justify; margin-top: 5px; margin-bottom: 5px; font-family: 微软雅黑; line-height: 22px;"><span style="font-weight: bold; color: #5f9ea0;">=sql("FRDemo","SELECT * FROM STSCORE where CLASSNO in ('"+$class+"') ",3,4)</span></div><div style="color: #383838; text-indent: 22px; text-align: justify; margin-top: 5px; margin-bottom: 5px; font-family: 微软雅黑; line-height: 22px;">并且class参数返回值的分隔符需为','，具体请查看下拉复选框参数联动。</div><img src ="http://www.blogjava.net/echoseason/aggbug/424996.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/echoseason/" target="_blank">season</a> 2015-05-11 17:17 <a href="http://www.blogjava.net/echoseason/archive/2015/05/11/424996.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一篇文章看懂图数据挖掘</title><link>http://www.blogjava.net/echoseason/archive/2014/12/29/421911.html</link><dc:creator>season</dc:creator><author>season</author><pubDate>Mon, 29 Dec 2014 03:53:00 GMT</pubDate><guid>http://www.blogjava.net/echoseason/archive/2014/12/29/421911.html</guid><wfw:comment>http://www.blogjava.net/echoseason/comments/421911.html</wfw:comment><comments>http://www.blogjava.net/echoseason/archive/2014/12/29/421911.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/echoseason/comments/commentRss/421911.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/echoseason/services/trackbacks/421911.html</trackback:ping><description><![CDATA[<div>互联网发展至今，数据规模越来越大，数据结构越来越复杂，而且对系统的需求越来越高。如果学习过数据结构，那么都知道图是放在最后一个结构，当你学习了图，那么应该感知到前面的链表，队列，树都是在图上面加了一些约束而派生出来的结构。所以图是一个一般性的结构，可以适应于任何结构类型的数据。那么图数据挖掘是干什么的呢?难道是开着挖掘机来进行挖掘?还是扛着锄头?下面讲讲什么是图数据挖掘。</div><div></div><div><img src="http://www.199it.com/wp-content/uploads/2014/08/3173-600x425.jpg" width="600" height="425" alt="" /></div><div></div><div><strong>一、什么是图数据挖掘</strong></div><div></div><div>这个话题感觉比较沉重，以至于我敲打每个字都要犹豫半天，这里我说说我对图数据挖掘的理解。数据是一个不可数名字，那么说明数据是一个没有边界的东西。而挖掘是一个很形象化的动词，一般意义上，挖掘是挖掘出对我们有用的东西，不然也不会闲着没事刨个坑把自己放进去，肯定是里面有宝贝，我们才挖掘。那么不难理解，数据挖掘就是挖掘数据里面的&#8220;宝贝&#8221;，图数据挖掘，就是以图的结构来存储、展示、思考数据，以达到挖掘出其中的&#8220;宝贝&#8221;。那这个&#8220;宝贝&#8221;是什么?这个有点主观意识来理解了，&#8220;宝贝&#8221;这个词本身就带有主观色彩，而没有一个客观的答案，不像是美女大胸、翘臀、高挑、皮肤白皙、脸蛋好看等一系列标准。那么如何理解图数据里面的&#8220;宝贝&#8221;呢?举个例子吧，例如：当今互联网产生了很多社交数据，某某关注了某某，那么某某和某某就有了关系，某某评论过某某，那么这又产生了关系，在这个里面某某就是图中的节点，而评论过，关注了则是节点之间的关系，如果某某再多点，这就形成了一个无边界的图了。那么对这个图进行关系挖掘，那么会产生很多有用的数据，比如可以推荐你可能认识的人，那就是朋友的朋友，甚至更深，这就形成了某空间好友推荐的功能。比如某宝的你可能喜欢的宝贝，可以通过图数据挖掘来实现。这就是我认为的图数据挖掘。</div><div></div><div>从学术上讲，图数据挖掘分为数据图，模式图两种。至于这两个类型的区别，由于很久没有关注这块，所以只能给出一个字面意义上的区别。数据图：则是以数据节点为基础来进行分析图，模式图：则是以数据整个关系模型来进行分析数据。可能解释存在错误，望指正。我之前主要是接触数据图一块的东西，模式图没有太多了解。关于数据图和模式图在学术界存在几个比较有参考意义的实现以及算法。数据图有：BANKS,BLINKS,Object rank;模式图有：DBXplorer(微软),DISCOVER(加利福尼亚大学)，S-CBR(人民大学，就是在大学学数据库都会知道的人：王珊)。下面主要对数据图的几种实现进行简单介绍，模式图，可以找上面相关论文进行了解。</div><div></div><div><strong>二、数据图典型实现介绍</strong></div><div><strong><br /></strong></div><div><strong>1、BANK</strong></div><div></div><div>整体上说一下它的思想是通过关系数据库进行存储图结构的数据加上Dijkstra算法来进行数据的存储和图数据的搜索。该算法第一步先是先是匹配所有关键词的关键节点，并且以每个关键节点为源节点进行一次Dijkstra算法对图进行遍历，因此可以形成和每个关键节点可达的节点堆，该堆是进行了按照到关键节点距离进行堆排序的堆。因此可以想想每个关键节点的节点堆的第一个元素则是到该关键节点最近的节点。利用这个，那么对每个节点堆一次遍历，每次遍历只取堆的第一个节点，可以得知，这个取出的节点和节点对对应的关键词是可达的，如果这个节点和所有关键节点可达，那么就可以这个节点为根节点形成一个结果树，所以需要对这个取出的节点进行标记，标记的目的就是说我这个关键节点来过这里了(有点类似到此一游的感觉)。这就是BANK的大体上的算法思想。下面提出一个流程图，帮助大家理解一下。</div><div></div><div><img src="http://www.199it.com/wp-content/uploads/2014/08/1_011-600x276.jpg" width="600" height="276" alt="" /><br /><img src="http://www.199it.com/wp-content/uploads/2014/08/1_021-600x275.jpg" alt="" /><br /><img src="http://www.199it.com/wp-content/uploads/2014/08/1_031-600x276.jpg" width="600" height="276" alt="" /></div><div></div><div>这种方式存在几个缺点：由于它的这个算法是需要把整个图结构加载到内存中，所以当节点数一大，那么可能会收到内存的限制。第二个缺点是，它的搜索是单向的，这样在效率上面存在一定的缺陷。这个算法也是我研究图数据挖掘主要研究的对象，因为比较简单，容易理解。下面针对上面两个缺陷介绍另外两个算法。</div><div></div><div><strong>2、算法</strong></div><div></div><div>这个算法则是在第一个基础上面进行了扩展，支持双向搜索。从而解决了上麦年的第二个缺陷。具体算法实现，很久没接触了，而且当时也没关注这方面的实现，所以我也不是很清楚，只是知道它实现了双向遍历。具体的可以点击标题，看它的论文。</div><div></div><div><strong>3、BLINK</strong></div><div></div><div>这个实现是解决了大图问题，通过对图进行分割，形成超图的概念，加载内存只需要把超图进来，当需要遍历这个超图节点的时候，再将超图节点里面的明细节点加载到内存，基于这个概念可以很好的解决节点数量大而受内存的限制，这个算法有点类似地图的放大镜，当需要展示某一块(超图节点)的时候，则加载当前块的内容，用户就会看到更加明细的地图信息。具体算法，可以点击标题，看看它的论文。</div><div><br /><div><span style="font-size: 10pt;">既然说道图，那么不得不提一下在图数据库方面最流行的neo4j.neo4j是在09年过年的时候接触的，当时是调研以何种方式来存储图数据，所以当时弄了一下，后没就没关注了。当时看neo4j真的很小，不像现在这么成熟。</span><br /></div></div><div><strong>三、NEO4J预览</strong></div><div></div><div>在NEO4J官方文档里面会看到下面几点介绍图数据库。</div><div></div><div>&#8220;A Graph &#8212;records data in&#8594; Nodes &#8212;which have&#8594; Properties&#8221;</div><div></div><div></div><img src="http://www.199it.com/wp-content/uploads/2014/08/180.jpg" alt="" /><div></div><div>上面很简单明了的介绍了图是什么，图是以节点存储记录数据，而节点数据是以属性形式关联节点。</div><div></div><div>&#8220;Nodes &#8212;are organized by&#8594; Relationships &#8212;which also have&#8594; Properties&#8221;</div><div></div><div>这句话说明了关系在图中的作用，可以理解节点是通过关系来进行组织和管理，并且关系也可以包裹属性信息。</div><div></div><div>&#8220;Nodes &#8212;are grouped by&#8594; Labels &#8212;into&#8594; Sets&#8221;</div><div></div><div>在图中标签的作用就是对节点进行分组，并且同一个标签的节点会放到一个集合中，这个有点类似上面说的对图进行分割。比如：给节点贴上一个&#8220;人&#8221;的标签，那么当对图进行搜索的时候，当指定&#8220;人&#8221;这个标签的时候，那么只会找到所有人的节点，而不会找到猫，狗等节点。这样可以提高图的遍历速度，而且可以更好的管理图的节点。</div><div></div><div>&#8220;A Traversal &#8212;navigates&#8594; a Graph; it &#8212;identifies&#8594; Paths &#8212;which order&#8594; Nodes&#8221;</div><div></div><div><img src="http://www.199it.com/wp-content/uploads/2014/08/189-600x384.jpg" width="600" height="384" alt="" /><br />一个路径的遍历，它可以正确的导航整个图的结构遍历，并且它可以对应一系列路径，这些路径则是将所有节点串联起来。这个解释了搜索在图中的定位，一条搜索可以对应多条路径，也就是多条结果，而每个结果包含一系列节点。</div><div></div><div>&#8220;An Index &#8212;maps from&#8594; Properties &#8212;to either&#8594; Nodes or Relationships&#8221;</div><div></div><div><img src="http://www.199it.com/wp-content/uploads/2014/08/190.jpg" width="542" height="411" alt="" /></div><div></div><div>图中的建立索引的数据来自于节点和关系的属性，并且索引会直接映射到节点和关系。这样可以通过索引遍历图中的节点和关系，以得到结果。</div><div></div><div>&#8220;A Graph Database &#8212;manages a&#8594; Graph and &#8212;also manages related&#8594; Indexes&#8221;</div><div></div><div><img src="http://www.199it.com/wp-content/uploads/2014/08/198-491x429.jpg" alt="" /></div><div></div><div>这里明确的表示了图数据是干什么的，同时也表达了NEO4J是干什么的。他是管理和维护图数据CRUD，并且维护图数据的索引建立和更新。是对图数据操作的一个对外接口。</div><img src ="http://www.blogjava.net/echoseason/aggbug/421911.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/echoseason/" target="_blank">season</a> 2014-12-29 11:53 <a href="http://www.blogjava.net/echoseason/archive/2014/12/29/421911.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>报表系列之权限控制</title><link>http://www.blogjava.net/echoseason/archive/2014/12/25/421820.html</link><dc:creator>season</dc:creator><author>season</author><pubDate>Thu, 25 Dec 2014 05:59:00 GMT</pubDate><guid>http://www.blogjava.net/echoseason/archive/2014/12/25/421820.html</guid><wfw:comment>http://www.blogjava.net/echoseason/comments/421820.html</wfw:comment><comments>http://www.blogjava.net/echoseason/archive/2014/12/25/421820.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/echoseason/comments/commentRss/421820.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/echoseason/services/trackbacks/421820.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 报表系统的权限控制包含功能点和数据两方面的权限控制。功能点权限控制，是指登录用户对某一功能点有无访问权限的控制；数据权限控制，是指登录用户对数据的访问范围的控制。本文将对数据权限控制的测试进行详细的介绍。首先，我们假设有销售业绩报表系统中预设有5个权限控制点：&nbsp;All &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbs...&nbsp;&nbsp;<a href='http://www.blogjava.net/echoseason/archive/2014/12/25/421820.html'>阅读全文</a><img src ="http://www.blogjava.net/echoseason/aggbug/421820.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/echoseason/" target="_blank">season</a> 2014-12-25 13:59 <a href="http://www.blogjava.net/echoseason/archive/2014/12/25/421820.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>报表知识之语义层</title><link>http://www.blogjava.net/echoseason/archive/2014/12/23/421679.html</link><dc:creator>season</dc:creator><author>season</author><pubDate>Tue, 23 Dec 2014 06:44:00 GMT</pubDate><guid>http://www.blogjava.net/echoseason/archive/2014/12/23/421679.html</guid><wfw:comment>http://www.blogjava.net/echoseason/comments/421679.html</wfw:comment><comments>http://www.blogjava.net/echoseason/archive/2014/12/23/421679.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/echoseason/comments/commentRss/421679.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/echoseason/services/trackbacks/421679.html</trackback:ping><description><![CDATA[<div>一、语义层定义</div><div>&#8220;语义层&#8221;英文名称为semantic layer。语义层技术通过对数据库里的有关数据项定义,把数据库中的数据定义成有明确的业务含义的名称。业务人员所面对的不再是表、字段和它们之间复杂的关联、计算关系,而是他所熟悉的业务术语和指标名称。</div><div>二、语义层 、MIB和管理进程之间的关系</div><div><img src="http://www.finereport.com/CN/wordpress/wp-content/uploads/images/semantic.png"  alt="" /></div><div>MIB：Management Information Base的缩写，中文名字叫&#8220;管理信息库&#8221;，它是网络管理数据的标准，在这个标准里规定了网络代理设备必须保存的数据项目，数据类型，以及允许在每个数据项目中的操作。通过对这些数据项目的存取访问，就可以得到该网关的所有统计内容。再通过对多个网关统计内容的综合分析即可实现基本的网络管理。</div><div>语义层作用：由图形可知，语义层通常应用于web报表软件中，作用是把数据库中的对象进行包装，产生高度面向业务的数据抽取模型。经过这种处理后，数据处理可以在业务层面上进行，在生成报表的时候，处理逻辑清晰。</div><div>三、语义层和报表功能的实现</div><div><strong>WEB中的应用</strong></div><div>Web报表中，用户在浏览器端可以基于语义层进行报表设计，可以远程访问服务器的报表模板，可以修改保存服务器的报表模板，可以远程连接服务器的数据库，可以远程运行浏览报表数据的过程。极大提高了报表设计的效率，也使终端用户的业务人员可以直接参与报表设计。</div><div><strong>数据表视图</strong></div><div>在语义层中，视图是报表的数据来源，凡是要将外部数据带入报表进行展现，都要将它做成一个视图。数据的来源可以是多种途径，主要有数据表、SQL查询、存储过程、内建视图等几种方式。其中数据表视图对应数据库中的物理表，每个表物理表对应一个数据表视图。</div><div><strong>指标</strong></div><div>指标，就是由表中的数据经过一些函数表达式运算而得到的结果，在报表设计中它的地位与字段完全相同。在语义层中定义了指标，用户在设计语义层报表时就可以像使用普通的字段一样使用指标，不用再写繁琐的字段间数据运算表达式了。下面就简单介绍一下，语义层中指标的定义和使用。</div><div><strong>权限控制</strong></div><div>语义层提供权限控制的功能，允许程序员调用API接口传入用户信息，从而对语义层进行权限控制。控制粒度可以粗到整个视图，也可以细到每一个数据。</div><div>提供的的权限控制接口是通过会话变量实现的。所谓的会话变量是指和用户个人信息相关的一些变量。</div><div><strong>数据库同步</strong></div><div>语义层数据库的维护包括数据表登记、数据表维护、数据备份、数据恢复四个部分，其中数据表维护功能不仅能将语义层中修改后的数据信息同步至数据库，而且还可以根据语义层定义的数据表在数据库中创建对应的物理表。</div><div><strong>数据查询</strong></div><div>报表语义层提供数据的查询功能，查询功能以向导的形式方便用户自行设定数据过滤条件，浏览过滤后的数据，当数据库中的数据量比较大时，该功能十分常用。</div><div><strong>引入和引出</strong></div><div>报表语义层提供引入引出功能。引入功能与引出功能相反，它是将已存在的.xls或.txt文件引入到当前数据表中。</div><div><strong>数据迁移功能</strong></div><div>语义层提供数据迁移功能。数据管道可以用来做数据迁移，使用数据管道可以把源数据库的一个或者多个表中的数据输入到目的数据库的一个表当中去。</div><div><strong>数据备份</strong></div><div>语义层数据库的维护包括数据表登记、数据表维护、数据备份、数据恢复四个部分，其中数据备份功能可以把语义层中所有的数据生成一个备份文件，也可以根据需要只备份某些表、某些表里的某些字段或者符合所设定过滤条件的数据。</div><div><strong>格式和显示值功能</strong></div><div>报表语义层提供为字段设置显示格式和显示值的功能</div><div><strong>批量功能</strong></div><div>语义层提供批量置数功能。批量置数功能可以按照设定的规则，批量设置数据表的各条记录，在模拟数据库测试阶段应用十分广泛。常用的批量置数方式有取行数、生成随机数和根据现有数据进行修改</div><img src ="http://www.blogjava.net/echoseason/aggbug/421679.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/echoseason/" target="_blank">season</a> 2014-12-23 14:44 <a href="http://www.blogjava.net/echoseason/archive/2014/12/23/421679.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>甘特图（Gantt chart）深度解析</title><link>http://www.blogjava.net/echoseason/archive/2014/12/11/421289.html</link><dc:creator>season</dc:creator><author>season</author><pubDate>Thu, 11 Dec 2014 07:56:00 GMT</pubDate><guid>http://www.blogjava.net/echoseason/archive/2014/12/11/421289.html</guid><wfw:comment>http://www.blogjava.net/echoseason/comments/421289.html</wfw:comment><comments>http://www.blogjava.net/echoseason/archive/2014/12/11/421289.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/echoseason/comments/commentRss/421289.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/echoseason/services/trackbacks/421289.html</trackback:ping><description><![CDATA[什么是甘特图（Gantt chart）<p>一般对甘特图的解释是：以图示的方式通过活动列表和时间刻度形象地表示出任何特定项目的活动顺序与持续时间，即甘特图（Gantt chart）是将活动与时间联系起来的一种<a title="图表" href="http://www.finereport.com/knowledge/chart1">图表</a>形式，显示每个活动的历时长短。甘特图能够从时间上整体把握进度，很清晰地标识出直到每一项任务的起始与结束时间，这也就不难理解甘特图的产生原因了&#8212;&#8212;因为生产管理领域生产计划制定的需要而产生。</p><p>让我们先看一下甘特图长什么样子，下图是用java报表软件FineReport制作的一个简单的项目甘特图，在这个甘特图中可以直观地查看每个项目的进展状况，并对多个项目进行对比 。在下面的多项目甘特图中，横轴表示时间，纵轴表示项目进度，这也是一般甘特图通用的形式。<br /><img title="多项目甘特图" alt="甘特图（Gantt chart）示例" src="http://www.finereport.com/wp-content/uploads/2014/11/Ganttchart1.png" data-bd-imgshare-binded="1"  .="centered" /></p>甘特图的使用场景<p>理解了甘特图的产生原因与自身特点，也就不难想象甘特图的使用场景了。甘特图适用于以下几种应用场景：</p><p>1、项目管理：甘特图是在现代的项目管理里，被广泛应用的一种图表形式。甘特图可以帮助我们预测时间、成本、数量及质量上的结果并回到开始，也能帮助我们考虑人力、资源、日期、项目中重复的要素和关键的部分，还能集成多张张各方面的甘特图而成为一张总图。以甘特图的方式，可以直观的看到任务的进展情况，资源的利用率等等。</p><p>2、如今甘特图不单单被应用到生产管理领域，随着生产管理的发展、项目管理的扩展，它被应用到了各个领域，如：建筑、IT软件、汽车等所有有把时间和任务进度联系到一起的领域。</p>制作甘特图的工具选择<p>能用来制作甘特图的软件工具大致分为三类：</p><p>1、免费开源图形插件</p><p>2、制作甘特图的专门图表软件</p><p>3、包含有甘特图功能的专业报表工具</p><p>对这三类工具，可能每个人的看法都有差别，但大致的方向是一致的，大家可根据具体需要进行选择：</p><p>免费开源图形插件适用于代码能力比较强的个人使用，众所周知，插件既然已经被称为开源插件，就是需要对其源代码进行一定的调试变化才能灵活使用；</p><p>专门制作甘特图的图表软件分为免费和收费两种，功能也就有强有弱，适合只有甘特图一种图表需求的用户；</p><p>包含甘特图功能的报表，即报表已经将甘特图集成到报表中，可以和其他报表与图表形式综合使用，适合处理比较复杂的数据，此类报表工具一般为专业的数据处理报表软件（例如FineReport），适用于功能要求比较高的企业级用户。</p>制作甘特图的简要步骤<p>1.明确项目牵涉到的各项活动、项目。内容包括项目名称（包括顺序）、开始时间、工期，任务类型（依赖/决定性）和依赖于哪一项任务。</p><p>2.创建甘特图草图。将所有的项目按照开始时间、工期标注到甘特图上。</p><p>3.确定项目活动依赖关系及时序进度。使用草图，按照项目的类型将项目联系起来，并安排项目进度。</p><p>4.计算单项活动任务的工时量。</p><p>5.确定活动任务的执行人员及适时按需调整工时。</p><p>6.计算整个项目时间。</p>用FineReport制作单项目甘特图详细教程<p>下图为一个简单的单项目甘特图，该项目包含需求调研、功能开发、验收测试3个任务：<br /><img title="单项目甘特图" alt="Gantt chart" src="http://www.finereport.com/wp-content/uploads/2014/11/Ganttchart2.png" data-bd-imgshare-binded="1"  .="centered" /><br />以计划实际完成百分比甘特图为例，下面介绍其制作方法。</p>数据准备<p>新建工作薄，添加内置数据集如下：<br /><img title="甘特图内置数据集" alt="甘特图数据集" src="http://www.finereport.com/wp-content/uploads/2014/11/Ganttchart3.png" data-bd-imgshare-binded="1"  .="centered" /><br />在单元格中统计出每个步骤的计划开始与结束时间、实际开始与结束时间及完成百分比，作为图表数据来源，如下图：<br /><img title="甘特图图表数据" alt="甘特图图表数据来源" src="http://www.finereport.com/wp-content/uploads/2014/11/Ganttchart4.png" data-bd-imgshare-binded="1"  .="centered" /><br />注：每个步骤的时间必须是纵向排列，活动必须为横向排列，即上面的表格必须保持一样的展现方式。</p><p>数据列设置如下：</p><div .="text-align: center;"><table border="1" cellspacing="0" cellpadding="0"  .="margin: auto; width: 60%;"><tbody><tr><th>单元格</th><th>数据集</th><th>数据列</th><th>属性</th></tr><tr align="center"><td>C1</td><td>ds1<td>步骤</td><td>从左到右扩展，其余默认</td></tr><tr align="center"><td>C2</td><td>ds1</td><td>计划开始时间</td><td>从左到右扩展，其余默认</td></tr><tr align="center"><td>C3</td><td>ds1</td><td>计划结束时间</td><td>从左到右扩展，其余默认</td></tr><tr align="center"><td>C4</td><td>ds1</td><td>实际开始时间</td><td>从左到右扩展，其余默认</td></tr><tr align="center"><td>C5</td><td>ds1</td><td>实际结束时间</td><td>从左到右扩展，其余默认</td></tr><tr align="center"><td>C6</td><td>ds1</td><td>完成百分比</td><td>从左到右扩展，其余默认</td></tr></tbody></table></div>插入图表<p>以悬浮图表为例，点击插入&gt;悬浮元素&gt;插入图表，选择甘特图，点击确定。</p><p>设置图表数据，某项如果没有，则填无。<br /><img title="甘特图图表设置" alt="甘特图效果图" src="http://www.finereport.com/wp-content/uploads/2014/11/Ganttchart5.png" data-bd-imgshare-binded="1"  .="centered" /></p>保存并预览<p>至此，一个简单的单项目甘特图就制作完成了，保存模板，点击分页预览，便即可看到如上的效果。</p><p>原文转载自：FineReport官网：<a href="http://www.finereport.com/knowledge/chart/gantt-chart.html" target="_blank">http://www.finereport.com/knowledge/chart/gantt-chart.html</a></p><img src ="http://www.blogjava.net/echoseason/aggbug/421289.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/echoseason/" target="_blank">season</a> 2014-12-11 15:56 <a href="http://www.blogjava.net/echoseason/archive/2014/12/11/421289.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>FineReport中图表排序的具体实现</title><link>http://www.blogjava.net/echoseason/archive/2014/12/11/421287.html</link><dc:creator>season</dc:creator><author>season</author><pubDate>Thu, 11 Dec 2014 07:52:00 GMT</pubDate><guid>http://www.blogjava.net/echoseason/archive/2014/12/11/421287.html</guid><wfw:comment>http://www.blogjava.net/echoseason/comments/421287.html</wfw:comment><comments>http://www.blogjava.net/echoseason/archive/2014/12/11/421287.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/echoseason/comments/commentRss/421287.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/echoseason/services/trackbacks/421287.html</trackback:ping><description><![CDATA[<p>FineReport中图表排序主要分为<strong>单系列（分类）图表排序</strong>和<strong>多系列分类图表排序</strong>两种，图表排序的实现和数据类排序的原理类似，以<a href="http://www.finereport.com/knowledge/chart1" target="_blank">图表</a>所代表的的数据大小为根本依据，在此基础上延展开来一系列的排序标准<span id="more-2822"></span>。以下主要是实现这两类图表特效的制作方法：</p>单系列（分类）图表排序<p>单系列（分类）图表排序适用于使用图表时，图表能够根据数据的大小进行显示。单系列（分类）图表排序则制作以柱形图为例，希望所有柱子能够根据数据的大小从高到低或者从低到高进行排序，如下图所示，此时要如何实现呢？<br /><img title="单系列（分类）图表排序" alt="单系列（分类）图表排序" src="http://www.finereport.com/wp-content/uploads/2014/11/chartorder1.png" data-bd-imgshare-binded="1"  .="centered" /><br /><strong>单系列图表排序效果实现思路</strong><br />图表的默认是根据系列进行排序显示的。</p><p>若图表数据源是来自单个数据集，那么可以直接使用数据集中的排序进行排序，然后设置图表数据源为数据集数据；若图表数据源是通过单元格计算出来的，则可以使用扩展后排序进行排序，然后设置图表数据源为单元格数据即可。<br /><strong>单系列图表排序详细步骤</strong></p><p>下面我们以一个简单的示例分别介绍下如何实现上图效果。</p><p>1、图表数据源为数据集数据</p><p>打开模板：%FR_HOME%\WebReport\WEB-INF\reportlets\doc\Advanced\Chart\Logchart.cpt</p><p>修改数据集</p><p>将原来的数据集修改为按照成本价进行降序排序，则SQL语句为：SELECT * FROM [产品] where 类别ID= 1 order by 成本价 desc</p><p>效果查看</p><p>点击分页预览，可以看到柱子从高到低进行降序排序了，如上效果图。</p><p>2、 图表数据源为单元格数据</p><p>打开模板</p><p>打开模板：%FR_HOME%\WebReport\WEB-INF\reportlets\doc\Advanced\Chart\Logchart.cpt。</p><p>修改模板</p><p>按照下图将对应的数据列拖入到单元格中<br /><img title="单系列图表排序之修改模板" alt="单系列图表排序" src="http://www.finereport.com/wp-content/uploads/2014/11/chartorder2.png" data-bd-imgshare-binded="1"  .="centered" /></p><p>排序设置</p><p>右击A2单元格，选择扩展属性，在单元格属性面板中设置扩展后排序为降序，并在公式中输入B2。</p><p>数据集设置</p><p>按照下图设置数据集：<br /><img title="单系列图表排序之数据集设置" alt="单系列图表排序" src="http://www.finereport.com/wp-content/uploads/2014/11/chartorder3.png" data-bd-imgshare-binded="1"  .="centered" /></p><p>隐藏单元格</p><p>将单元格中的数据隐藏起来，选中第一行和第二行，右击，选择隐藏行即可。</p><p>效果查看</p><p>点击分页预览，可以看到柱子从高到低进行降序排序了。其他的图表类型，如条形图和饼图，做类似设置可达到同样的图表排序。</p>多系列分类图表排序<p>如下图，数据库中有一张表，每个分类下面的系列均已经按照特定的顺序（系列汇总，即各个系列的流量总和降序排列）排列好，并且有些分类下的数据缺省。<br /><img title="多系列分类图表排序" alt="多系列分类图表排序" src="http://www.finereport.com/wp-content/uploads/2014/11/chartorder4.png" data-bd-imgshare-binded="1"  .="centered" /></p><p>用上述表中数据制作一个数据集数据源柱形图，如下图，会看到图例的排序与数据库中数据不一致，数据库中每个分类下的系列排序是一样的（缺省系列不参与排序），而图表中图例顺序却是按照从数据库中读取系列（port）字段的顺序排序的，如果第一个分类下的系列名称不缺省，那么图表图例顺序会显示正常（直接从第一个读到最后一个，显示完全），如果第一个分类下面的系列数据有缺省，所以图例排序会先显示该分类下有的系列，缺省的系列会显示在后面，就会打乱原来的顺序：<br /><img title="多系列分类图表排序之顺序错乱" alt="多系列分类图表排序" src="http://www.finereport.com/wp-content/uploads/2014/11/chartorder5.png" data-bd-imgshare-binded="1"  .="centered" /></p><p>那么该如何实现，在系列缺省的状况下还保持图表图例顺序与数据库中顺序一致呢？<br /><strong>多系列分类图表排序实现思路</strong></p><p>使用单元格作为图表的数据源，在单元格中将数据重新排序，即形成一个交叉报表，横向和纵向表头分别是分类和系列，缺省的地方会自动显示为空，然后将系列重新排序即可。<br /><strong>实现示例</strong></p><p>1 、单元格数据<br />如下图，将数据列拖曳至单元格中，形成交叉报表，并计算每个系列下的汇总流量值。要手动设置C15，也就是sum函数所在单元格的左父格，设为A15。<br /><img title="多系列分类图表排序之单元格数据" alt="多系列分类图表排序" src="http://www.finereport.com/wp-content/uploads/2014/11/chartorder6.png" data-bd-imgshare-binded="1"  .="centered" /></p><p>2、 单元格重新排序</p><p>选中图表系列所在单元格，也就是A15，在单元格属性表-扩展属性&gt;扩展后中，选择降序排序，公式为=C15，如下图：<br /><img title="多系列分类图表排序之单元格重新排序" alt="多系列分类图表排序" src="http://www.finereport.com/wp-content/uploads/2014/11/chartorder7.png" data-bd-imgshare-binded="1"  .="centered" /></p><p>点击分页预览，会发现交叉表中系列名称又重新弄排好序了，如下图：<br /><img title="多系列分类图表排序之最终效果" alt="多系列分类图表排序" src="http://www.finereport.com/wp-content/uploads/2014/11/chartorder8.png" data-bd-imgshare-binded="1"  .="centered" /></p><p>3、图表数据源</p><p>单元格数据制作好了，下面将单元格数据与图表进行绑定，也就是重新添加图表数据源，选中图表，在图表属性表-数据一栏中，数据来源选择单元格数据源。</p><p>点击分页预览，即可看到多系列分类图表排序效果。</p><p>原文转载自：FineReport官网：<a href="http://www.finereport.com/knowledge/chart/chartorder.html" target="_blank">http://www.finereport.com/knowledge/chart/chartorder.html</a></p><img src ="http://www.blogjava.net/echoseason/aggbug/421287.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/echoseason/" target="_blank">season</a> 2014-12-11 15:52 <a href="http://www.blogjava.net/echoseason/archive/2014/12/11/421287.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>图表条件显示</title><link>http://www.blogjava.net/echoseason/archive/2014/12/11/421286.html</link><dc:creator>season</dc:creator><author>season</author><pubDate>Thu, 11 Dec 2014 07:31:00 GMT</pubDate><guid>http://www.blogjava.net/echoseason/archive/2014/12/11/421286.html</guid><wfw:comment>http://www.blogjava.net/echoseason/comments/421286.html</wfw:comment><comments>http://www.blogjava.net/echoseason/archive/2014/12/11/421286.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/echoseason/comments/commentRss/421286.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/echoseason/services/trackbacks/421286.html</trackback:ping><description><![CDATA[<p><a href="http://www.finereport.com/knowledge/chart1" target="_blank">图表</a>条件显示属于FineReport图表特效之一，即根据一定的条件设置显示一定的自定义图表效果。本文主要介绍两种图表条件显示形式<span id="more-2835"></span>：</p><p .="centered">根据条件显示柱形图柱子颜色&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 设置系列标签颜色与图例颜色相同</p>根据条件显示柱形图柱子颜色<p>此特图表特效适宜于希望将满足一定条件的某个系列高亮显示的要求。例如希望将如下图，销售成本最少的显示红色，销售成本最大的蓝色突出，以上需求可以通过设置图表的条件显示来实现：<br /><img title="图表条件显示" alt="图表条件显示" src="http://www.finereport.com/wp-content/uploads/2014/11/chartcondition1.png"  .="centered" data-bd-imgshare-binded="1" /></p>根据条件显示柱子颜色示例<p>1 打开报表</p><p>这是一张对数坐标显示柱形图报表。</p><p>2 修改系列样式</p><p>为突出条件显示的色调，将柱形图的系列配色改为纯色，如下图：<br /><img title="" alt="图表条件显示" src="http://www.finereport.com/wp-content/uploads/2014/11/chartcondition2.png"  .="centered" data-bd-imgshare-binded="1"  图表条件显示之图表系列样式?="" /></p><p>3 设置条件显示</p><p>根据条件显示系列的颜色</p><p>选中图表，选择报表属性表-特效&gt;条件显示，点击，添加条件属性1，添加完成之后，单击条件属性1，弹出条件属性设置对话框，改变背景色为红色，条件为值 等于 &#8216;=sql(&#8220;FRDemo&#8221;,&#8221;select min(成本价) from 产品 where 类别ID= 1&#8243;,1)&#8217;；</p><p>使用sql公式获取类别ID为1时的最小成本，当值等于最小值时，柱子颜色变为红色。<br /><img title="图表条件显示之图表颜色" alt="图表条件显示" src="http://www.finereport.com/wp-content/uploads/2014/11/chartcondition3.png" width="600"  .="centered" data-bd-imgshare-binded="1" /></p><p>根据条件显示系列的边框格式</p><p>对最大成本系列设置类似，添加条件属性2，点击选择要改变的属性，条件为值 等于 &#8216;=sql(&#8220;FRDemo&#8221;,&#8221;select max(成本价) from 产品 where 类别ID= 1&#8243;,1)&#8217;，如下图：<br /><img title="图表条件显示之设置条件" alt="图表条件显示" src="http://www.finereport.com/wp-content/uploads/2014/11/chartcondition4.png" width="600"  .="centered" data-bd-imgshare-binded="1" /></p><p>同样的方法可以控制标签内容、主次坐标轴、趋势线等其他属性。</p><p>点击分页预览，模板效果如上图。</p>设置系列标签颜色与图例颜色相同<p>1. 问题描述</p><p>在查看图表的标签数据时，希望标签内容和图例的颜色相同，即实现如下图所示的效果。效果图如下：<br /><img title="图表条件显示之效果" alt="图表条件显示" src="http://www.finereport.com/wp-content/uploads/2014/11/chartcondition5.png" width="600"  .="centered" data-bd-imgshare-binded="1" /></p><p>2. 解决方案</p><p>通过设置条件显示给每个系列单独设置标签显示颜色即可。</p><p>3. 示例</p><p>打开模板，设置条件显示。</p><p>选中图表，单击图表属性表-特效&gt;条件显示，添加条件属性1，属性选择标签内容，修改标签字体的样式，这里将字体颜色修改为红色，然后在普通条件处增加系列序号等于对应的序号即可，如下图：<br /><img title="图表条件显示之设置条件显示" alt="图表条件显示" src="http://www.finereport.com/wp-content/uploads/2014/11/chartcondition6.png" width="600"  .="centered" data-bd-imgshare-binded="1" /></p><p>同样可以对其它属性进行修改。</p><p>点击分页预览，可以看到如上图效果。</p><p>原文转载自：FineReport官网：<a href="http://www.finereport.com/knowledge/chart/conditiondisplay.html" target="_blank">http://www.finereport.com/knowledge/chart/conditiondisplay.html</a></p><img src ="http://www.blogjava.net/echoseason/aggbug/421286.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/echoseason/" target="_blank">season</a> 2014-12-11 15:31 <a href="http://www.blogjava.net/echoseason/archive/2014/12/11/421286.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在FineReport报表软件中实现分发逐级上报</title><link>http://www.blogjava.net/echoseason/archive/2014/12/11/421279.html</link><dc:creator>season</dc:creator><author>season</author><pubDate>Thu, 11 Dec 2014 07:07:00 GMT</pubDate><guid>http://www.blogjava.net/echoseason/archive/2014/12/11/421279.html</guid><wfw:comment>http://www.blogjava.net/echoseason/comments/421279.html</wfw:comment><comments>http://www.blogjava.net/echoseason/archive/2014/12/11/421279.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/echoseason/comments/commentRss/421279.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/echoseason/services/trackbacks/421279.html</trackback:ping><description><![CDATA[什么是分发逐级上报<p>分发逐级上报是指任务流程是先从上级到下级，然后下级再逐级上报回上级，即上级部门将任务下发下来，下级部门收到任务之后，逐级上报，直至回到下发任务的上级部门，然后再继续原来的任务。</p><p>比如说公司领导想要查看本月的销售情况，而现在数据库中暂时还没有销售数据的存在，那么就可以创建一个销售数据上报的流程，让各个销售员将销售数据上报上来，如果公司销售人员不多，那么就可以使用联合填报上报，直接为每个销售人员绑定上报任务，但是当公司人员很多的时候，大家并不知道每个销售人员的具体情况，那么此时就可以使用分发逐级上报，领导想要查看销售数据，那么首先收集数据，销售经理将销售数据收集的任务分发到各个销售员，分发方式是通过新增上报流程和上报任务，形成一个循环的子任务，当所有销售员收到子任务时，上报之后，知道所有人录入完毕，直至子任务流转完毕，当前任务节点回到分发任务的销售经理头上，即任务已经回到主任务的节点，继续进行下行操作，销售经理录入数据之后，领导查看即完成整个分发逐级上报的流程。</p>分发逐级上报示例<p>用管理员登录系统，点击多级上报&gt;上报流程管理，添加一个上报流程分发逐级上报，该上报流程有二个节点，销售经理进行任务分发收集数据（创建子流程进行数据收集），领导查看销售数据。</p><p>第一个节点用户创建流程，添加任务分发到其下级部门，当分发下去的子任务全部流转完成之后，任务流转回到第一个节点，第一个节点用户将数据上报之后，第一个节点才算流转完成，这时才会到第二个节点。</p>分发逐级上报流程添加<p>点击多级上报&gt;上报流程管理，添加一个上报流程，总共有二个节点，销售经理需要分发任务到其下属部门，故其需要有分发的操作方式，二个节点的配置如下图：<br /><img title="上报流程添加" alt="报表分发逐级上报" src="http://www.finereport.com/wp-content/uploads/2014/11/shangbao1.gif" width="600" data-bd-imgshare-binded="1"  .="centered" /></p><p>注：第一个节点需要配置分发任务。</p><p>另：如果任务分发对象有多个，则可绑定多个用户，任务分发对象是指拥有分发操作权限的节点的下一个节点。</p>添加上报任务<p>点击多级上报&gt;上报任务管理，添加一个上报任务，如下图：<br /><img title="添加上报任务" alt="报表分发逐级上报" src="http://www.finereport.com/wp-content/uploads/2014/11/shangbao2.png" width="600" data-bd-imgshare-binded="1"  .="centered" /></p>销售经理分发任务<p>用销售经理分发任务节点绑定的用户Alice登录系统，点击多级上报&gt;我的上报任务，可以看到有一个分发逐级上报的未处理任务，其有上报和分发两个任务操作，其中分发是指该用户创建一个新的子任务，然后分发下去，当子任务流转完成之后，回到该节点，该用户上报之后，该节点就完成了可以进入下一个节点，如下图：<br /><img title="销售经理分发任务" alt="报表分发逐级上报" src="http://www.finereport.com/wp-content/uploads/2014/11/shangbao3.png" width="600" data-bd-imgshare-binded="1"  .="centered" /></p><p>任务分发</p><p>分发就是指重新创建一个新的任务然后进入该任务的流转周期，由上报任务管理可知，创建任务之前，需要存在一个该任务对应的流程，首先我们添加一个新的流程分发子流程，该子流程只有一个节点，并且该节点是联合填报节点，绑定了所有的销售人员，节点设置如下图：<br /><img title="子流程添加" alt="报表分发逐级上报" src="http://www.finereport.com/wp-content/uploads/2014/11/shangbao4.png" width="600" data-bd-imgshare-binded="1"  .="centered" /></p><p>上报流程的具体添加过程请查看上报流程管理。</p><p>流程创建好之后，再次回到我的上报任务的未处理任务列表中，点击分发按钮，分发一个新的任务，如下图：<br /><img title="分发新任务" alt="报表分发逐级上报" src="http://www.finereport.com/wp-content/uploads/2014/11/shangbao5.png" width="600" data-bd-imgshare-binded="1"  .="centered" /></p><p>点击确定之后，该子任务就已经分发下去了，此时我们使用前面子流程绑定的Anna和Cherry用户分别登录系统，就可以看到这两个用户的我的上报任务列表中均有一个名为分发子任务的未处理任务，分别将数据上报之后，直至当前子任务处于关闭状态，如下图：<br /><img title="分发任务" alt="报表分发逐级上报" src="http://www.finereport.com/wp-content/uploads/2014/11/shangbao6.gif" width="700" data-bd-imgshare-binded="1"  .="centered" /></p><p>分发子流程关闭之后，任务流程回到前面分发任务的主节点上，接着向下流转，这里使用Alice登录系统，点击多级上报&gt;我的上报任务，点击上报按钮，将销售经理的销售数据也上报之后，该分发任务节点就已经完成，流转到下一个节点，如下图：<br /><img title="任务流转" alt="报表分发逐级上报" src="http://www.finereport.com/wp-content/uploads/2014/11/shangbao7.png" width="700" data-bd-imgshare-binded="1"  .="centered" /></p><p>注：分发子任务完成之后，节点必须回到之前进行分发任务的用户上，该用户对数据进行上报或者审核之后，才能继续流转。</p>领导查看数据<p>用领导的账号登录系统，点击我的上报任务，在未处理任务中可以看到任务操作为审核，点击审核按钮，进入模板操作界面，此时，领导可以查看到所有销售人员的销售数据，点击模板下方的任务流程查看按钮，可以看出，该任务流程已经流转到最后一个节点领导查看数据，直接点击审核，审核通过，即可完成整个任务流程，如下图：<br /><img title="领导查看数据" alt="报表分发逐级上报" src="http://www.finereport.com/wp-content/uploads/2014/11/shangbao8.png" width="600" data-bd-imgshare-binded="1"  .="centered" /></p><p>原文转载自：FineReport官网：<a href="http://www.finereport.com/knowledge/design/shangbao.html" target="_blank">http://www.finereport.com/knowledge/design/shangbao.html</a></p><img src ="http://www.blogjava.net/echoseason/aggbug/421279.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/echoseason/" target="_blank">season</a> 2014-12-11 15:07 <a href="http://www.blogjava.net/echoseason/archive/2014/12/11/421279.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>动态图表</title><link>http://www.blogjava.net/echoseason/archive/2014/12/11/421278.html</link><dc:creator>season</dc:creator><author>season</author><pubDate>Thu, 11 Dec 2014 07:00:00 GMT</pubDate><guid>http://www.blogjava.net/echoseason/archive/2014/12/11/421278.html</guid><wfw:comment>http://www.blogjava.net/echoseason/comments/421278.html</wfw:comment><comments>http://www.blogjava.net/echoseason/archive/2014/12/11/421278.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/echoseason/comments/commentRss/421278.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/echoseason/services/trackbacks/421278.html</trackback:ping><description><![CDATA[<p>与静态图表不同，动态图表的核心在于数据和<a href="http://www.finereport.com/knowledge/chart1">图表</a>类型可随条件的不同即时展现，即除了能展现一般的静态图表内容之外，动态图表还有很好的<a href="http://www.finereport.com/knowledge/chart/interaction.html">交互性</a>。动态图表实现原理与动态报表类似，是基于参数传递或数据过滤实现的，本文介绍的是基于数据参数传递原理的动态图表。</p><br /><h3>动态图表数据</h3><br /><p>用户希望根据条件的不同，显示的图表不同，这是动态图表产生的最初推动力。如下图，选择年份与月份条件，图表中显示满足条件的数据，从而实现动态图表：<br /><img title="动态图表数据" alt="动态图表" src="http://www.finereport.com/wp-content/uploads/2014/11/dynamiccharts1.png" width="600" real_src="http://www.finereport.com/wp-content/uploads/2014/11/dynamiccharts1.png" action-type="show-slide" action-data="http%3A%2F%2Fwww.finereport.com%2Fwp-content%2Fuploads%2F2014%2F11%2Fdynamiccharts1.png" data-bd-imgshare-binded="1" /></p><br /><h4>实现思路</h4><br /><p>根据参数条件动态改变图表的数据来源：</p><br /><p>若图表数据来源于数据集，那么可以通过数据源参数来动态改变图表的数据；</p><br /><p>若图表数据来源于单元格，那么可以通过报表参数，并设置过滤来改变图表的数据，该节就以此为例。</p><br /><h4>示例</h4><br /><p>1 准备数据</p><br /><p>新建工作薄，添加数据集ds1，SQL语句为SELECT Year(订购日期)as 年, month(订购日期)as 月, 货主省份, 应付金额 FROM <br />[订单] 。</p><br /><p>2 定义参数</p><br /><p>我们根据选择的年份与月份来动态改变图表，定义3个报表参数：<br />报表参数Year：年份，默认值为2010；<br />报表参数Start：起始月份，默认值为1；<br />报表参数End：结束月份，默认值为6。</p><br /><p>参数界面设计如下：<br /><img style="max-width: 100%;" title="动态图表参数界面" alt="动态图表" src="http://www.finereport.com/wp-content/uploads/2014/11/dynamiccharts2.png" real_src="http://www.finereport.com/wp-content/uploads/2014/11/dynamiccharts2.png" action-type="show-slide" action-data="http%3A%2F%2Fwww.finereport.com%2Fwp-content%2Fuploads%2F2014%2F11%2Fdynamiccharts2.png" data-bd-imgshare-binded="1" /></p><br /><p>3 表样制作<br />在单元格中统计出各省某年若干月的销售额情况并汇总，如下图：<br /><img title="动态图表表样制作" alt="动态图表" src="http://www.finereport.com/wp-content/uploads/2014/11/dynamiccharts3.png" real_src="http://www.finereport.com/wp-content/uploads/2014/11/dynamiccharts3.png" data-bd-imgshare-binded="1" /></p><br /><p>数据列设置如下：<br />单元格 数据集 数据列 属性<br />A3 ds1 货主省份 设置过滤条件：年 等于$Year<br />B3 ds1 年 <br />默认<br />C2 ds1 月 从左到右扩展，设置过滤条件：月 大于或等于$Start and 月 小于或等于$End<br />C3 ds1 应付金额 <br />汇总-求和</p><br /><p>根据参数值的不同，单元格中统计出来的数据不同，以单元格作为数据来源，图表显示的数据也不同，从而实现动态图表。</p><br /><p>4 插入图表</p><br /><p>合并一片单元格如上图，右击单元格元素&gt;插入图表，选择柱形图，点击确定。</p><br /><p>5 图表类型设置</p><br /><p>柱形图种类选择三维柱形图，如下图：<br /><img title="动态图表柱形图种类" alt="动态图表" src="http://www.finereport.com/wp-content/uploads/2014/11/dynamiccharts4.png" real_src="http://www.finereport.com/wp-content/uploads/2014/11/dynamiccharts4.png" data-bd-imgshare-binded="1" /></p><br /><p>6 图表数据设置</p><br /><p>图表数据来源于单元格数据分类轴为地区，系列名称为月份，系列值为销售额，如下图：<br /><img title="动态图表图表数据" alt="动态图表" src="http://www.finereport.com/wp-content/uploads/2014/11/dynamiccharts5.png" real_src="http://www.finereport.com/wp-content/uploads/2014/11/dynamiccharts5.png" data-bd-imgshare-binded="1" /></p><br /><p>点击保存，一张根据参数的改变动态改变的图表便制作完成了。</p><br /><p>7 动态标题设置</p><br /><p>给图表设置一个动态的标题，选中图表，选择图表属性表-样式&gt;标题，点击公式按钮，公式为=$Year+&#8221;年度&#8221;+$Start+&#8221;&#8212;&#8221;+$End+&#8221;月销售额统计&#8221;，根据参数的不同显示动态标题。</p><br /><p><img title="动态图表之动态标题设置" alt="动态图表" src="http://www.finereport.com/wp-content/uploads/2014/11/dynamiccharts6.png" real_src="http://www.finereport.com/wp-content/uploads/2014/11/dynamiccharts6.png" data-bd-imgshare-binded="1" /></p><br /><p>最后报表主体中模板样式如下图：<br /><img title="动态图表模板样式" alt="动态图表" src="http://www.finereport.com/wp-content/uploads/2014/11/dynamiccharts7.png" real_src="http://www.finereport.com/wp-content/uploads/2014/11/dynamiccharts7.png" data-bd-imgshare-binded="1" /></p><br /><p>8 保存与预览</p><br /><p>保存模板，点击分页预览，效果如上。模板效果在线查看请点击Dynamic.cpt<br />已完成模板可参考%FR_HOME%\WebReport\WEB-INF\reportlets\doc\Advanced\Chart\Dynamic.cpt。</p><br /><h3>图表动态展示</h3><br /><p>FR图表在BS下可以动态显示（只有二维图表才有动态效果，三维图表无此功能），如下图：<br /><img title="图表动态展示" alt="动态图表" src="http://www.finereport.com/wp-content/uploads/2014/11/dynamiccharts8.png" real_src="http://www.finereport.com/wp-content/uploads/2014/11/dynamiccharts8.png" action-type="show-slide" action-data="http%3A%2F%2Fwww.finereport.com%2Fwp-content%2Fuploads%2F2014%2F11%2Fdynamiccharts8.png" data-bd-imgshare-binded="1" /></p><br /><h4>设置方法</h4><br /><p>二维图表默认就开启了&#8220;动态展示&#8221;，单击选中图表，在设计器右侧图表属性表中选择特效，点击交互属性，可将动态展示设置为关，如下图：<br /><img title="动态图表之动态展示" alt="动态图表" src="http://www.finereport.com/wp-content/uploads/2014/11/dynamiccharts9.png" real_src="http://www.finereport.com/wp-content/uploads/2014/11/dynamiccharts9.png" data-bd-imgshare-binded="1" /></p><br /><p>原文转载自：FineReport官网：<a href="http://www.finereport.com/knowledge/chart/dynamiccharts.html">http://www.finereport.com/knowledge/chart/dynamiccharts.</a><a href="http://www.finereport.com/knowledge/chart/dynamiccharts.html">html</a></p><img src ="http://www.blogjava.net/echoseason/aggbug/421278.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/echoseason/" target="_blank">season</a> 2014-12-11 15:00 <a href="http://www.blogjava.net/echoseason/archive/2014/12/11/421278.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>动态数据报表</title><link>http://www.blogjava.net/echoseason/archive/2014/12/11/421276.html</link><dc:creator>season</dc:creator><author>season</author><pubDate>Thu, 11 Dec 2014 06:30:00 GMT</pubDate><guid>http://www.blogjava.net/echoseason/archive/2014/12/11/421276.html</guid><wfw:comment>http://www.blogjava.net/echoseason/comments/421276.html</wfw:comment><comments>http://www.blogjava.net/echoseason/archive/2014/12/11/421276.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/echoseason/comments/commentRss/421276.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/echoseason/services/trackbacks/421276.html</trackback:ping><description><![CDATA[<p>在财务报表中，动态报表是指反映一定时期内资金耗费和资金收回的报表。动态数据报表和财务报表中的概念有所区分：动态数据报表中，动态意为变化与可交互性，动态数据报表也就是指可以变化的报表，也就是报表开发者为报表最终用户提供的报表是可配置的，是可以进行个性化调整的，一个动态报表相当于一个设计合理的报表模板，不同的报表用户可以配置出他们最想要的运行方式。当然动态报表的变化要讲究一定的规律，提供给最终用户的操作界面是非常直观，非常容易操作的。</p><p>动态数据报表的实现途径之一是通过动态图表，即数据与图表之间的交互体现报表的动态性，另一途径是通过报表的条件设置，即直接的数据交互，实现报表的动态数据展现。</p>通过图表实现动态数据报表<p>FineReport的图表动态性和交互性良好，可进行坐标提示、数据点提示、交互高亮、系列交互、坐标轴缩放、多维度坐标轴等设置，完美实现强大的图表动态交互效果。<br /><a href="http://www.finereport.com/CN/wordpress/wp-content/uploads/2014/10/chart1.gif" target="_blank"><img alt="图表动态交互效果" src="http://www.finereport.com/CN/wordpress/wp-content/uploads/2014/10/chart1.gif" width="600"  .="centered" data-bd-imgshare-binded="1" /></a><br />图表联动，是图与图直接的联动效果，点击父图表系列，所有子图表联动变化。<br /><img alt="图表动态交互效果" src="http://www.finereport.com/wp-content/uploads/2014/11/dongtai.png" width="600"  .="centered" data-bd-imgshare-binded="1" /></p><p>FineReport动态图表的实现还可以通过图表在线切换来实现，即同一系列数据可以同时绑定多个图表类型，根据需要，在线切换图表类型。</p>通过数据交互实现动态数据报表<p>通过数据交互实现动态数据报表方法之一是通过设置多种查询条件，不同的条件设置可以过滤出不同的报表数据。FineReport报表设计器的参数设计界面易操作，提供多种参数控件，使得设计多参数查询报表易如反掌，使得实现参数联动等动态效果良好的报表也不再是难题。</p>数据联动<p>数据联动，是点击表格，数据变化，图表的数据也发生变化，点击父表格数据，所有子图表、子表格数据联动变化<br /><img alt="图表动态交互效果" src="http://www.finereport.com/wp-content/uploads/2014/11/dongtai1.png"  .="centered" data-bd-imgshare-binded="1" /></p>多维度数据分析<p>多位数据分析是利用表单功能，实现数据的不同维度展现。 不同维度的动态切换方便了决策者对数据的多维度把握，更有助于决策。<br /><a href="http://www.finereport.com/CN/wordpress/wp-content/uploads/2014/10/analysis3.gif" target="_blank"><img alt="多维度数据分析" src="http://www.finereport.com/CN/wordpress/wp-content/uploads/2014/10/analysis3.gif" width="600"  .="centered" data-bd-imgshare-binded="1" /></a></p><p>原文转载自：FineReport官网：<a href="http://www.finereport.com/knowledge/professional/dongtaireport.html" target="_blank">http://www.finereport.com/knowledge/professional/dongtaireport.html</a></p><img src ="http://www.blogjava.net/echoseason/aggbug/421276.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/echoseason/" target="_blank">season</a> 2014-12-11 14:30 <a href="http://www.blogjava.net/echoseason/archive/2014/12/11/421276.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>报表参数</title><link>http://www.blogjava.net/echoseason/archive/2014/12/11/421273.html</link><dc:creator>season</dc:creator><author>season</author><pubDate>Thu, 11 Dec 2014 05:40:00 GMT</pubDate><guid>http://www.blogjava.net/echoseason/archive/2014/12/11/421273.html</guid><wfw:comment>http://www.blogjava.net/echoseason/comments/421273.html</wfw:comment><comments>http://www.blogjava.net/echoseason/archive/2014/12/11/421273.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/echoseason/comments/commentRss/421273.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/echoseason/services/trackbacks/421273.html</trackback:ping><description><![CDATA[<p>参数是报表生成之前想报表设计文件输入的报表元素。报表的应用程序可以访问报表的参数的属性。数据集取出所有的数据，数据扩展的时候使用<strong>报表参数</strong>过滤出有用的数据，<strong>报表参数</strong>必须要与数据列过滤结合使用。</p><p>下面讲解报表参数的具体设置步骤：</p>1、打开报表<p>打开报表%FR_HOME%\WebReport\WEB-INF\reportlets\doc\Primary\GroupReport\Group.cpt。</p>2、 定义报表参数<p>点击<strong>菜单模板</strong>&gt;<strong>模板参数</strong>，添加一个地区参数，默认值设置为&#8220;华北&#8221;，如下图所示：<br /><img title="添加报表参数" alt="报表参数" src="http://www.finereport.com/wp-content/uploads/2014/11/canshu1.png" width="600"  .="centered" data-bd-imgshare-binded="1" /></p>3、 参数过滤设置<p>此时数据列仍然会扩展出数据集中的所有数据，因此需要使用<strong>报表参数</strong>来过滤。选中地区数据列单元格，过滤，条件为地区等于参数＄地区：<br /><img title="添加报表参数" alt="报表参数" src="http://www.finereport.com/wp-content/uploads/2014/11/canshu2.png" width="600"  .="centered" data-bd-imgshare-binded="1" /></p>4、制作参数界面<p>点击参数模块处的笔，使参数界面处于可编辑状态，参数界面的右下方会显示没有添加控件的参数名称，如下图：<br /><img title="添加报表参数" alt="报表参数" src="http://www.finereport.com/wp-content/uploads/2014/11/canshu3.png" width="600"  .="centered" data-bd-imgshare-binded="1" /></p><p>点击添加全部，会将参数控件，控件名及查询按钮显示在界面中，默认的参数界面如下：<br /><img title="添加报表参数" alt="报表参数" src="http://www.finereport.com/wp-content/uploads/2014/11/canshu4.png" width="600"  .="centered" data-bd-imgshare-binded="1" /></p>5、 保存报表并发布<p>保存报表并分页预览，修改参数值为&#8220;华东&#8221;，便查询出了华东的数据：<br /><img title="添加报表参数" alt="报表参数" src="http://www.finereport.com/wp-content/uploads/2014/11/canshu5.png" width="600"  .="centered" data-bd-imgshare-binded="1" /></p><p>模板效果在线查看请点击Parameter.cpt</p><p>已完成的模板，可参见%FR_HOME%\WebReport\WEB-INF\reportlets\doc\Primary\Parameter\Parameter.cpt</p><p>原文转载自：FineReport官网：<a href="http://www.finereport.com/knowledge/professional/reportparameters.html" target="_blank">http://www.finereport.com/knowledge/professional/reportparameters.html</a></p><img src ="http://www.blogjava.net/echoseason/aggbug/421273.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/echoseason/" target="_blank">season</a> 2014-12-11 13:40 <a href="http://www.blogjava.net/echoseason/archive/2014/12/11/421273.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>我们还需要开源报表工具吗?</title><link>http://www.blogjava.net/echoseason/archive/2014/12/11/421272.html</link><dc:creator>season</dc:creator><author>season</author><pubDate>Thu, 11 Dec 2014 05:32:00 GMT</pubDate><guid>http://www.blogjava.net/echoseason/archive/2014/12/11/421272.html</guid><wfw:comment>http://www.blogjava.net/echoseason/comments/421272.html</wfw:comment><comments>http://www.blogjava.net/echoseason/archive/2014/12/11/421272.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/echoseason/comments/commentRss/421272.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/echoseason/services/trackbacks/421272.html</trackback:ping><description><![CDATA[曾几何时，中国大地上报表工具群雄并起，为了挣得一席之地，各报表厂商使出浑身解数，广告到处是，价格各种低，拼的血肉横飞。但奇怪的是，受市场欢迎的竟然是Jasperreport+ireport、birt报表这样开源的java报表工具。究其原因，无非是这两个词&#8220;开源&#8221;、&#8220;免费&#8221;。<p>	时间转到2014年第4季度，当年炙手可热的开源报表软件是否还那么受欢迎，是否还拥有那么多的粉丝？经典的、较知名的开源报表工具有&#8220;JasperReports&#8221;、&#8220;ireport&#8221;、&#8220;JFreeReport&#8221;、&#8220;BIRT&#8221;、 &#8220;Openreports&#8221;、&#8220;DataVision&#8221;、&#8220;Fourfive&#8221;和&#8220;Jmagallanes&#8221;这几款，下面我们一一述说他们的境况。</p><h3>JasperReports</h3><p><a title="jasperReports+Ireport和FineReport报表的对比" href="http://blog.chinaunix.net/knowledge/acquire/jasperreportsireport.html" target="_blank">JasperReports</a>是程序员最受欢迎、最常用的开源报表工具，常和ireport一起搭配使用。JasperReports可以在Java环境下制作报表，支持PDF、HTML、XLS、CSV和XML文件输出格式。<br />百度搜索&#8220;JasperReports&#8221;，结果有988000条，但内容多是2012年以前的，排名第一位的官网，更新时间竟然是2008年，可以看出jasperreports的关注度、搜索量已经不比往年。<br /><img class="centered" title="JasperReports百度搜索结果" alt="JasperReports" src="http://www.finereport.com/wp-content/uploads/2014/10/open1.jpg" width="500" data-bd-imgshare-binded="1" /></p><h3>Ireport</h3><p><a title="jasperReports+Ireport和FineReport报表的对比" href="http://blog.chinaunix.net/knowledge/acquire/jasperreportsireport.html" target="_blank">Ireport</a>和jasperreports是天生一对，是转为后者开发的纯java的可视化报表设计器。Ireport允许用户可视化编辑包含charts、图片、子报表等的复杂报表。iReport 还集成了JFreeChart图表制作包。允许用户可视化地编辑XML JasperDesign文件。<br />百度搜索ireport，返回2240000条结果，内容同样没有多少更新，毋庸置疑，ireport也丧失掉了人们的宠爱。<br /><img class="centered" title="Ireport百度搜索结果" alt="Ireport" src="http://www.finereport.com/wp-content/uploads/2014/10/open2.jpg" width="500" data-bd-imgshare-binded="1" /></p><h3>JFreeReport</h3><p>	JFreeReport是一个用来生成报表的Java类库，现在改名为Pentaho Reporting。作为开源报表工具的它为Java应用程序提供一个灵活的打印功能并支持输出到打印机和PDF, Excel, HTML和XHTML, PlainText, XML和CSV文件中。<br />百度搜索JfreeReport返回了19100条结果，搜索Pentaho Reporting返回了35600条结果，相比ireport更加寒碜，而且可悲的是，笔者试图找到最新的源码包和使用教程，竟然没有找到，资源还都是2009年以前的。<br /><img class="centered" title="Ireport软件下载" alt="JFreeReport" src="http://www.finereport.com/wp-content/uploads/2014/10/open3.jpg" width="500" data-bd-imgshare-binded="1" /></p><h3>BIRT</h3><p>	BIRT是一个Eclipse-based开源报表系统。它主要是用在基于Java与J2EE的Web应用程序上。BIRT主要由两部分组成：一个是基于Eclipse的报表设计和一个可以加到你应用服务的运行期组件。BIRT同时也提供一个图形报表制作引擎。<br />BIRT报表由数据连接、数据转换、业务逻辑设计、表现四个组成逻辑构成，可以设计制作简单的列表报表、交叉报表和文本报表，也支持饼图、折线图、柱形图等基础图表。<br /><img class="centered" title="BIRT报表贴吧留言" alt="BIRT报表" src="http://www.finereport.com/wp-content/uploads/2014/10/open4.jpg" width="500" data-bd-imgshare-binded="1" /><br />BIRT报表的搜索结果还是很多的，达到了163万，这得益于与Eclipse强大的支持。但是网络舆论是怎么样的呢？大家是热捧还是棒杀？经过一番资料收集加上个人经验，BIRT的优劣大概有这么几点。优点是免费，操作界面清晰直观，布局比较科学，图表还是比较漂亮的，而且本地化做的还好，安装之后操作界面是中文的（最新版是4.4.1，可以下载测试下），这些优点在开源报表工具中也算是比较突出的。同样，缺点也很明显，条带状的报表模型，很多中国式复杂报表做不了，没有填报，若项目中遇到填报需要花费大量时间开发，最麻烦的就是问题找不到技术支持，学习资料也是很少。下图是一个网友对Birt报表的心声和态度。</p><h3>Openreports</h3><p>	OpenReports提供基于web的开源报表解决方案，通过浏览器自动生成动态PDF,XLS,HTMLCSV和Chart报表。利用到的开源技术有Hibernate,Veloctiy,Webwork。<br />百度搜索Openreports返回了78400条数据，打开其官网，发现真是简陋至极， 不愧是开源报表工具！请问帮助文档在哪？请问可以交流的人在哪？请问可以在那里交流问题。<br /><img class="centered" title="Openreports帮助文档" alt="Openreports报表" src="http://www.finereport.com/wp-content/uploads/2014/10/open5.jpg" width="500" data-bd-imgshare-binded="1" /></p><h3>DataVision</h3><p>	DataVison 是一个类似于 Crystal Reports 的开源报表工具。通过它可以使用一个拖放的 GUI 设计报告并从应用程序中运行、查看和打印报告，或者将报告导出为 HTML、XML、PDF、LaTeX2e、DocBook 或以制表符或逗号分隔的文本文件，这些文件又可以用于生成 PDF、文本、HTML、PostScript 格式的报告。<br /><img class="centered" title="DataVison软件版本" alt="DataVison开源报表" src="http://www.finereport.com/wp-content/uploads/2014/10/open6.jpg" width="500" data-bd-imgshare-binded="1" /><br />DataVison的热度似乎要好一些，百度搜索结果达到70多万，但版本一直停留在2008年的V1.2.0，这就是一个致命缺陷了。翻遍各大IT论坛和问答网，也不见DataVison的讨论，可以判断，DataVison就是昨日辉煌。</p><h3>Fourfive、Jmagallanes等</h3><p>	之所以把他们放在一起，是因为这些开源报表工具实在是人气太低了，没有必要去单独介绍分析。笔者只能说，fourfive和jmagallanes已经over了。</p><p>	经过上面的分析，可以看出开源报表工具风光大不如以前，日薄西山了，形成前后如此巨大差异的原因是是什么？</p><p>	数年前，人力成本低，所开发的系统难度也不高，相对于昂贵的商业报表工具，开源的报表工具成了最好的选择，虽然开源报表工具都很难，但投入人力研究是可行的。而现在，一方面人力成本成了项目的主要成本，另一方面系统难度逐渐升级，要求的稳定性、功能、美观度和交互效果已远非开源工具能解决的，对整个项目而言，商业报表工具带来的效益以远高于投入。简单总结一下，开源报表工具的致命缺点有：</p><p>1、功能整体比较弱，若是项目需求有变更，项目开发者将陷于进退两难境地，此外开源报表功能薄弱，所实现的效果、展现的功能较收费软件差距较大。</p><p>2、技术服务没有保障，若是项目中遇到难题或出现bug，开发者只能叹息了，总之项目风险很大。</p><p>3、对人员能力要求高，一般是程序员才能胜任使用开源报表，但须知这类人员的人力成本。</p><p>4、学习成本高，全英文的帮助文档、产品说明书和产品使用界面，让多少英雄泪流满面。当然也有学习资料好的，但那收费！</p><p>	那么，社会潮流已经抛弃开源报表软件，需要什么样的商业报表软件呢？</p><p>	对应开源报表软件的4大致命缺点，需要的商业报表需要满足如下条件：</p><p>1、功能强大，可以解决中国式复杂报表，支持多数据源报表、html5图表、移动端、填报功能。</p><p>2、强大的技术支持团队，覆盖到全国的服务体系，多种多样的服务渠道和服务响应策略。</p><p>3、报表产品易学易用易集成，0编码即可制作报表，最好支持业务人员自己DIY报表并分析。</p><p>4、事实证明类excel设计模式是最适合中国的报表设计模式，需要类excel的设计界面，多种多样的学习资料，如帮助文档、视频教程、线下线上培训课程。</p><p>	当然满足这一条件的国产报表软件并不多（国外报表软件水土不服，这里直接pass掉），而FineReport便是翘楚，是中国报表软件第一品牌！<br />原文转载自：FineReport官网:<a href="http://www.finereport.com/knowledge/acquire/opensourcereport.html">http://www.finereport.com/knowledge/acquire/opensourcereport.html</a></p><img src ="http://www.blogjava.net/echoseason/aggbug/421272.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/echoseason/" target="_blank">season</a> 2014-12-11 13:32 <a href="http://www.blogjava.net/echoseason/archive/2014/12/11/421272.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>典型数据报表的样式和作用</title><link>http://www.blogjava.net/echoseason/archive/2014/12/11/421270.html</link><dc:creator>season</dc:creator><author>season</author><pubDate>Thu, 11 Dec 2014 04:03:00 GMT</pubDate><guid>http://www.blogjava.net/echoseason/archive/2014/12/11/421270.html</guid><wfw:comment>http://www.blogjava.net/echoseason/comments/421270.html</wfw:comment><comments>http://www.blogjava.net/echoseason/archive/2014/12/11/421270.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/echoseason/comments/commentRss/421270.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/echoseason/services/trackbacks/421270.html</trackback:ping><description><![CDATA[数据报表的概念<p>数据报表，即为用表格和图形来直观的展示数据。数据报表的类型和样式繁多，包括最常见的财务数据报表（资产负债表、利润表、现金流量表和股东权益变动表等）、销售数据报表（产品销售明细表、销售成本表、销售计划和完成情况表、市场分析表等）等。</p>数据报表的样式<p>FineReport是中国web报表软件领导品牌，在设计和制作数据报表上有着强大的优势和丰富的经验，制作的报表&#8220;性能好、样式多、交互性强&#8221;，下面就分享一下FineReport的demo中的一些典型的数据报表的样式和作用。</p>基本表<p><img title="基本表" alt="基本数据报表" src="http://www.finereport.com/wp-content/uploads/2014/11/datareport1.png" width="600"  .="centered" data-bd-imgshare-binded="1" /><br />基本明细汇总表：该表用于展现数据明细，进行最基础的数据汇总。</p><p>段落明细表：段落明细表为普通的明细格式报表。每条数据占据较规则的一片区域，一个段落。形成多个单据主体。此类报表的设计方法非常简单，仅需在设计时自定义数据的跟随扩展父格即可。<br /><img title="段落明细表表" alt="段落明细数据报表" src="http://www.finereport.com/wp-content/uploads/2014/11/datareport2.png" width="600"  .="centered" data-bd-imgshare-binded="1" /></p><p>多层统计表：多层统计表可以更好的展示多个维度的数据，是数据报表中常用的类型之一。<br /><img title="多层统计表" alt="多层统计数据报表" src="http://www.finereport.com/wp-content/uploads/2014/11/datareport3.png" width="600"  .="centered" data-bd-imgshare-binded="1" /></p><p>高级条件分组表：这种分组表实质上是基本的数据汇总分析，因为在数据库中基本上不会存储汇总数据。<br /><img title="高级条件分组表" alt="高级条件分组数据报表" src="http://www.finereport.com/wp-content/uploads/2014/11/datareport4.png" width="600"  .="centered" data-bd-imgshare-binded="1" /></p><p>动态折叠树表：为了更好的有规则的展示报表，企业也会选用动态折叠树表。<br /><img title="动态折叠树表" alt="动态折叠树数据报表" src="http://www.finereport.com/wp-content/uploads/2014/11/datareport5.png" width="600"  .="centered" data-bd-imgshare-binded="1" /></p><p>卡片分栏条码表：很多行业都需要卡片分栏报表，打印之后贴在物品之上，便于管理识别，快递行业经常使用。<br /><img title="卡片分栏条码表" alt="卡片分栏条码数据报表" src="http://www.finereport.com/wp-content/uploads/2014/11/datareport6.png" width="600"  .="centered" data-bd-imgshare-binded="1" /></p><p>简单自由填报表：填报是采集数据的途径，通过web报表采集可以保证数据的规范性和实效性。简单自由填报表，就是最基本的填报报表了。<br /><img title="简单自由填报表" alt="简单自由填报数据报表" src="http://www.finereport.com/wp-content/uploads/2014/11/datareport7.png" width="600"  .="centered" data-bd-imgshare-binded="1" /></p>销售主题数据报表<p>销售情况综合分析数据表：用于展示销售的收入、成本、净利润和销售业绩的数据，分析维度众多，包括常见的发货情况、收款情况、年份增长等。同时，也会有市场分布和员工业绩分析，是综合的销售数据报表。<br /><img title="销售主题数据报表" alt="销售主题数据报表" src="http://www.finereport.com/wp-content/uploads/2014/11/datareport8.png" width="800"  .="centered" data-bd-imgshare-binded="1" /></p><p>TOP10员工回款和销售额分析数据表：用于分析前10名的销售员每月的订单金额和回款率。<br /><img title="员工回款和销售额分析数据" alt="员工回款和销售额分析数据报表" src="http://www.finereport.com/wp-content/uploads/2014/11/datareport9.png" width="800"  .="centered" data-bd-imgshare-binded="1" /></p><p>产品分析数据表：用来分析产品的市场情况、销售额、价格等情况，进行展现产品的SWOT的分析情况。<br /><img title="产品分析数据表" alt="产品分析数据报表" src="http://www.finereport.com/wp-content/uploads/2014/11/datareport10.png" width="800"  .="centered" data-bd-imgshare-binded="1" /></p><p>客户ABC等级分析数据表：对客户进行分级管理，方便企业获取更多的利润。<br /><img title="客户ABC等级分析数据表" alt="客户ABC等级分析数据报表" src="http://www.finereport.com/wp-content/uploads/2014/11/datareport11.png" width="800"  .="centered" data-bd-imgshare-binded="1" /></p><p>订单分析数据表：用于分析订单的总额、来源和销售额预计。<br /><img title="订单分析数据表" alt="订单分析数据报表" src="http://www.finereport.com/wp-content/uploads/2014/11/datareport12.png" width="800"  .="centered" data-bd-imgshare-binded="1" /></p>财务主题数据报表<p>EVA经济附加值模型表：根据表中的数据分析，EVA是一个计算的数字，随着所得税税率的增加而减少。仅从算术角度上来说，是很容易理解的。EVA公司的管理人员清楚明白增加价值只有三条基本途径：一是可以通过更有效地经营现有的业务和资本，提高经营收入；二是投资所期回报率超出公司资本成本的项目；三是可以通过出售对别人更有价值的资产或通过提高资本运用效率，比如加快流动资金的运转，加速资本回流，而达到把资本沉淀从现存营运中解放出来的目的。<br /><img title="EVA经济附加值模型表" alt="EVA经济附加值模型表" src="http://www.finereport.com/wp-content/uploads/2014/11/datareport13.png" width="800"  .="centered" data-bd-imgshare-binded="1" /></p><p>盈亏平衡点分析表：根据表中的数据分析，该企业将要投产的新产品，当销售单价定为30元时，销售量需要达到40000个，方能达到盈亏平衡，盈亏平衡点的销售额为120000。<br /><img title="盈亏平衡点分析表" alt="盈亏平衡点分析数据报表" src="http://www.finereport.com/wp-content/uploads/2014/11/datareport14.png" width="800"  .="centered" data-bd-imgshare-binded="1" /></p><p>F分数模型分析表：F分数低于临界点，表示公司财务情况不妙。本表根据实际的财务计算后发现，得分仅有-0.12，低于临界值0.0274，该公司的财务情况及其恶劣，有极大可能会破产。<br /><img title="F分数模型分析表" alt="F分数模型分析数据报表" src="http://www.finereport.com/wp-content/uploads/2014/11/datareport15.png" width="800"  .="centered" data-bd-imgshare-binded="1" /></p><p>阿特曼Z-SCORE模型分析表：Z值与公司发生财务危机的可能性成反比，Z值越小。公司发生财务危机的可能行就越大，Z值越大，公司发生财务危机的可能性就越小。对于不同的企业，临界值可能会有所不同。本表根据实际的计算后发现，Z得分仅有0.7，因此前景堪忧，企业很可能破产。<br /><img title="阿特曼Z-SCORE模型分析表" alt="阿特曼Z-SCORE模型分析数据报表" src="http://www.finereport.com/wp-content/uploads/2014/11/datareport16.png" width="800"  .="centered" data-bd-imgshare-binded="1" /></p><p>杜邦分析表：Z值与公司发生财务危机的可能性成反比，Z值越小。公司发生财务危机的可能行就越大，Z值越大，公司发生财务危机的可能性就越小。对于不同的企业，临界值可能会有所不同。本表根据实际的计算后发现，Z得分仅有0.7，因此前景堪忧，企业很可能破产。<br /><img title="杜邦分析表" alt="杜邦分析数据报表" src="http://www.finereport.com/wp-content/uploads/2014/11/datareport17.png" width="800"  .="centered" data-bd-imgshare-binded="1" /></p><p>巴萨利分数模型分析表：巴萨利指数过低，或者负数，表示公司前景不妙。本表根据实际的财务计算后发现，得分仅有1.69，因此可能公司的财务状况相对较差，前景堪忧。<br /><img title="巴萨利分数模型分析表" alt="巴萨利分数模型数据报表" src="http://www.finereport.com/wp-content/uploads/2014/11/datareport18.png" width="800"  .="centered" data-bd-imgshare-binded="1" /></p><p>帕里普分析模型表：根据表中连续三年的数据分析可知，股利支付比率没有变化，影响可持续增长比率的原因在于净资产收益率的变化。将净资产收益率展开，可以继续对比分析引起净资产收益率的因素：净利润率、总资产周转率和财务杠杆作用。09年到11年三年间除净利润率先减后增，总资产周转率和财务杠杆作用都呈现下降趋势。<br /><img title="帕里普分析模型表" alt="帕里普分析模型据报表" src="http://www.finereport.com/wp-content/uploads/2014/11/datareport19.png" width="800"  .="centered" data-bd-imgshare-binded="1" /></p><p>资产负债表：通过统计企业各项资产和收入支出来评判企业的资产负债情况，是企业极为重要的财务数据报表之一。<br /><img title="资产负债表" alt="资产负债数据报表" src="http://www.finereport.com/wp-content/uploads/2014/11/datareport20.png" width="800"  .="centered" data-bd-imgshare-binded="1" /></p><p>现金流量表：用于展示分析企业的各种账款的流水明细，由于现金流是企业的命脉，所以现金流量表也是企业财务数据报表不可分割的一部分。<br /><img title="现金流量表" alt="现金流量数据报表" src="http://www.finereport.com/wp-content/uploads/2014/11/datareport21.png" width="800"  .="centered" data-bd-imgshare-binded="1" /> </p><p>损益表：通过企业的营业总收入、总成本和其他经营收益，反映出一段时间内企业的收入、市场、支出情况。<br /><img title="损益表" alt="损益数据报表" src="http://www.finereport.com/wp-content/uploads/2014/11/datareport22.png" width="800"  .="centered" data-bd-imgshare-binded="1" /></p><p>利润结构分析表：用于分析企业利润的构成。<br /><img title="利润结构分析表" alt="利润结构分析数据报表" src="http://www.finereport.com/wp-content/uploads/2014/11/datareport23.png" width="800"  .="centered" data-bd-imgshare-binded="1" /></p><p>原文转载自：FineReport官网：<a href="http://www.finereport.com/knowledge/professional/datareport.html" target="_blank">http://www.finereport.com/knowledge/professional/datareport.html</a></p><img src ="http://www.blogjava.net/echoseason/aggbug/421270.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/echoseason/" target="_blank">season</a> 2014-12-11 12:03 <a href="http://www.blogjava.net/echoseason/archive/2014/12/11/421270.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>用FineReport报表系统建设企业决策平台</title><link>http://www.blogjava.net/echoseason/archive/2014/12/11/421266.html</link><dc:creator>season</dc:creator><author>season</author><pubDate>Thu, 11 Dec 2014 03:23:00 GMT</pubDate><guid>http://www.blogjava.net/echoseason/archive/2014/12/11/421266.html</guid><wfw:comment>http://www.blogjava.net/echoseason/comments/421266.html</wfw:comment><comments>http://www.blogjava.net/echoseason/archive/2014/12/11/421266.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/echoseason/comments/commentRss/421266.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/echoseason/services/trackbacks/421266.html</trackback:ping><description><![CDATA[<h3>企业信息化现状</h3><p>随着互联网IT的兴起和发展，企业的产品规模逐渐扩大，面对日益加大的竞争压力和新市场开拓需求，信息化管理成为各行各业领导者的重要课题。于是我们看到，企事业单位不断的上线各种各样的信息化系统，今天上ERP，明天上OA，后天上HER，随着之间的增长，企业内部的信息系统不断增加，流程复杂程度越来越高，各类信息琳琅满目，冗余数据也越来越多。总之，年年换钱买新软件，新软件却不能满足年年变化的需求。<br /><img class="centered" title="企业信息化现状" alt="企业信息化现状" src="http://www.finereport.com/wp-content/uploads/2014/11/plat1.png" width="600" data-bd-imgshare-binded="1" /></p><p>业务人员面对诸多的业务系统手足无措，管理层面对杂乱无章的数据一头雾水，决策层面对凌乱的报告更是无从下手。企事业单位身处信息孤岛中，苦不堪言，部门协同不畅，企业资源浪费，企业的发展受到严重制约。<br /><img class="centered" title="信息孤岛" alt="信息孤岛决策" src="http://www.finereport.com/wp-content/uploads/2014/11/plat2.png" width="600" data-bd-imgshare-binded="1" /></p><p>所以，如何将各个系统的数据统一起来进行展示和分析，为业务执行层、管理层搭建数据综合展示平台，为企业决策层搭建领导管理驾驶舱，为整个企业构建完善的报表中心，为企业建设一站式的用于决策支持的信息中心系统，已经成为企业信息化发展的当务之急。</p><h3>FineReport管理决策平台的价值</h3><p>FineReport报表系统的作用，就是将多个系统的数据统一展示，利用决策平台进行统一分析，既满足管理层对报表中心的需求，也满足决策层对管理驾驶舱的需求，达到如下效果：</p><p>1、集中、统一管理企业内部的分散数据</p><p>2、规范、协同企业内部的大小事务流程</p><p>3、多样的交互展示效果，为企业决策提供依据</p><p>4、降低报表制作的人力、物力、财力成本</p><p>5、移动BI、报表监控，让企业实时掌握第一手的数据</p><p>故而，借助FineReport数据决策平台，企业可以实现管理大师德鲁克所讲的有效管理，即信息全面掌握，业绩预警预测，员工分工明确，提供办公效率，从而提高企业运转效率和效益。<br /><img class="centered" title="数据决策平台" alt="数据决策平台" src="http://www.finereport.com/wp-content/uploads/2014/11/plat3.png" width="600" data-bd-imgshare-binded="1" /><br />FineReport数据决策平台呈现方式如下（截图仅供参考，不同企业不同产品版本稍有不同）。<br /><img class="centered" title="FineReport数据决策平台" alt="FineReport数据决策平台" src="http://www.finereport.com/wp-content/uploads/2014/11/plat4.png" width="600" data-bd-imgshare-binded="1" /><br />领导管理驾驶舱和业务报表平台，共同构成了数据决策平台，在这一综合报表门户中，企业不同角色的人将共同奋斗，为企业的发展做出自己的贡献。</p><h4>领导管理驾驶舱</h4><p>领导驾驶舱作为数据决策平台的重要部分，通过各种常见的图表来形象显示企业运行的各项关键指标，直观的监测出企业运营的情况。领导者通过管理驾驶舱来掌舵企业的发展和方向。</p><h4>业务报表平台</h4><p>业务报表平台作为中间管理层的业务分析和处理平台，细化分析各项业务数据，查漏补缺，进而保证企业战略的运行。中间管理层通过业务报表平台来监督检查企业的战略战术执行。</p><h3>数据决策平台的建设规划</h3><p>数据决策平台的建设以整体项目目标为导向，并将整体项目目标分为阶段目标进行实现，这里分为两大阶段。<br />第一阶段：整合内部多个系统间的数据，以制作企业为例，整合、销、存、货物跟踪、财务、人事等数据，这也是后续目标的前提条件，接着进行报表开发，完成企业业务的数据展示，达到优化并疏通企业运营的目的。<br />第二阶段：在基础业务数据的基础上，设计并开发数据决策分析类的主题分析报表，形成销售分析、商品分析、库存分析、客户分析、财务分析、库存分析、利润分析等企业决策分析模块，提供给管理者和决策者多维度的、清晰的数据决策支持，达到优化辅助管理及决策的最终目的。</p><h3>数据决策平台的建设案例</h3><p>以皮具行业的某企业为例，下面重点介绍一下数据决策平台的细节内容。</p><p>该皮具企业需要建设的主题包括&#8220;进销存、财务、人事、货源、综合分析&#8221;，需要解决&#8220;需要哪些数据、如何整合数据、从哪些维度展示数据、需要如何的交互效果&#8221;等问题。</p><p>本文主要分析进销存主题。</p><h4>供应商主题</h4><p>对于制造业及零售业，尤其是产品生命周期短、市场变化过快、供求变化迅速的皮具行业来说，供应商的选择对企业从设计、制造、质量、服务、企业文化发展等都是至关重要的，选择一个适合本企业的供应商不仅可以减轻采购员的各种负担，更有助于企业长远发展。因此，从企业业务来讲，必须清晰掌握与供应商合作过程产生的关键数据。 供应商主题这一块，分为两个大的方向。 第一个展示的是供应商所供应的产品情况列表。 可供选择的条件维度包括：时间范围、供应商名称、材料名称。 供应商展示维度应该包括如下：材料名称、规格、供应商名称、批数、合格批数、合格率。并要求提供预警机制，如合格率低于80%，则必须预警。仓库管理员及上层管理者可根据该模板所展示出来各个供应商的供应批次、合格率、合格原因及比率等，掌握每个供应商的供应质量，为供应商的选择提供量化依据。效果为：<br /><img class="centered" title="供应商决策依据" alt="供应商决策平台" src="http://www.finereport.com/wp-content/uploads/2014/11/plat5.png" width="600" data-bd-imgshare-binded="1" /><br />另外需要展示供应商交易日报表：<br /><img class="centered" title="供应商交易日报表" alt="供应商交易日报表" src="http://www.finereport.com/wp-content/uploads/2014/11/plat6.png" width="600" data-bd-imgshare-binded="1" /></p><h4>销售主题</h4><p>销售主题的业务报表需分为三个大方面进行展示：销售月报、销售周报和销售日报。<br />皮具行业更多的时候，销售点过多且零散、企业内不同品牌销售周期不一样、销售过程在一定程度上受季节影响，因此销售日报和周报对于企业管理来说，更多是为了维系日常销售行为、和记录产生基本数据。销售记录的基元有效性，对应的产生于销售月报中。 销售月报包括：门店或销售点、销售员（可选）、周数、货品、库存量、均价、数量、销售金额、毛利率、存销比、上月环比。<br /><img class="centered" title="销售月报表" alt="销售主题决策依据" src="http://www.finereport.com/wp-content/uploads/2014/11/plat7.png" width="600" data-bd-imgshare-binded="1" /><br />此外，销售主题中，还有品牌销售报表、促销活动报表，用来做不同的分析。<br />图：品牌销售报表<br /><img class="centered" title="品牌销售报表" alt="品牌销售决策依据" src="http://www.finereport.com/wp-content/uploads/2014/11/plat8.png" width="600" data-bd-imgshare-binded="1" /><br />图：促销活动报表<br /><img class="centered" title="促销活动报表" alt="促销活动决策平台依据" src="http://www.finereport.com/wp-content/uploads/2014/11/plat9.png" width="600" data-bd-imgshare-binded="1" /></p><h4>库存主题</h4><p>皮具企业成长至今，销售主题占据企业管理的目的因子，而库存主题则很大程度上成为了企业的盈利因子。因此对于库存的展示及分析，必须是整体而且细致的，必须同时掌握库存静态数据、动态变化和价值结构。 业务展示中的库存主题，分为三个方面： 库存月报、入库出库跟踪月报、成本毛利月报。</p><p>库存月报和销售主题一样，库存往往更新过快，数据凌乱且毫无章序。因此库存主题的基元也便不可避免的落到库存月报上。库存月报包括如下几个维度：库别、物料代码、物料名称、规格、数量、金额、期初数量、期初库存金额、库存数量、库存金额、实盘数量、盘点差异。<br /><img class="centered" title="库存月报表" alt="决策平台" src="http://www.finereport.com/wp-content/uploads/2014/11/plat10.png" width="600" data-bd-imgshare-binded="1" /></p><p>对于企业来讲，从库存月报中可掌握库存静态的详情，然后这一点远远是不够的，只有在掌握库存月报的基础上，实时了解入库出库情况，才能真正掌握库存的具体状况。入库出库跟踪月报效果如下：<br /><img class="centered" title="入库出库跟踪月报" alt="决策平台" src="http://www.finereport.com/wp-content/uploads/2014/11/plat11.png" width="600" data-bd-imgshare-binded="1" /> </p><p>完成了上述两个报表以后，企业成员已经轻松掌握库存的具体状况和动态信息，而对于经营者来说，必须在掌握库存状态的情况下，了解库存物料的价值结构。成本毛利月报效果如下：<br /><img class="centered" title="成本毛利月报" alt="决策平台依据" src="http://www.finereport.com/wp-content/uploads/2014/11/plat12.png" width="600" data-bd-imgshare-binded="1" /> </p><h3>FineReport数据决策平台的总结</h3><p>从上文可以看出，FineReport数据决策平台可以切实解决企业所遇到的问题，实现企业的各种业务主题分析。究其原因，便是依赖于 FineReport强大的报表设计、管理、交互功能，企业才能灵活多变的创造属于自己的数据决策分析平台。</p><br />原文转载自：FineReport官网：<a href="http://www.finereport.com/knowledge/acquire/decisionplatform.html">http://www.finereport.com/knowledge/acquire/decisionplatform.html</a><img src ="http://www.blogjava.net/echoseason/aggbug/421266.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/echoseason/" target="_blank">season</a> 2014-12-11 11:23 <a href="http://www.blogjava.net/echoseason/archive/2014/12/11/421266.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>报表控件与报表软件的区别</title><link>http://www.blogjava.net/echoseason/archive/2014/10/21/418920.html</link><dc:creator>season</dc:creator><author>season</author><pubDate>Tue, 21 Oct 2014 11:02:00 GMT</pubDate><guid>http://www.blogjava.net/echoseason/archive/2014/10/21/418920.html</guid><wfw:comment>http://www.blogjava.net/echoseason/comments/418920.html</wfw:comment><comments>http://www.blogjava.net/echoseason/archive/2014/10/21/418920.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/echoseason/comments/commentRss/418920.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/echoseason/services/trackbacks/418920.html</trackback:ping><description><![CDATA[ 长久以来，报表控件和报表软件的概念一直模糊不清，人们以为报表控件就是报表软件，其实不然。
从字面上讲，&#8220;控件&#8221;更像是一组功能模块，是对数据和方法的封装；而&#8220;软件&#8221;则是一套功能产品，提供完整的系统的界面化操作应用。所以报表控件就是提供简单报表制作、展示、输出、打印的功能组件，而报表软件提供的是复杂报表制作（尤其是中国式复杂报表）、丰富的多样的报表展示、支持自适应打印等功能的报表应用解决方案。报表控件之于报表软件，如同单片机之于计算机，两者是不同等级和时代的产品，应用不同，都为世界贡献着精彩。
报表控件
麻雀虽小，五脏俱全。报表控件功能虽弱，但也像报表软件那样，具备报表设计器和报表服务器两个模块，报表设计器用来设计报表样式，编辑和修改报表；报表服务器则承担运行、解析报表的重任。报表控件种类繁多，而且很多都是开源的免费产品，即便是商业报表控件，价格也不会很高。但报表控件对技术人员能力要求高，比如外语能力（很多开源报表控件都是国外的，比如ireport），代码能力，国内很多人都望而却步。国内的报表控件功能和稳定性差强人意，所以真正应用的人并不多。空白即时商机，以报表控件为前身的报表软件产品发展逐渐红火，以至于白热化。
报表软件
以帆软FineReport为代表的报表软件，提供了多数据源关联、动态隔间运算、聚合报表、html5动态图表、移动报表应用、权限集成和分配、二次开发等功能，加速了报表行业的发展，也让报表控件逐渐淡出了大家的视线。帆软FineReport易学易用易集成，可以大大提高项目进度，增加项目收益。
因为报表控件，所以报表软件，这是科技的进步，小伙伴们，你明白了吗。
原文转载自：http://www.finereport.com/knowledge/professional/difference.html<img src ="http://www.blogjava.net/echoseason/aggbug/418920.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/echoseason/" target="_blank">season</a> 2014-10-21 19:02 <a href="http://www.blogjava.net/echoseason/archive/2014/10/21/418920.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>多数据源报表</title><link>http://www.blogjava.net/echoseason/archive/2014/10/21/418918.html</link><dc:creator>season</dc:creator><author>season</author><pubDate>Tue, 21 Oct 2014 11:01:00 GMT</pubDate><guid>http://www.blogjava.net/echoseason/archive/2014/10/21/418918.html</guid><wfw:comment>http://www.blogjava.net/echoseason/comments/418918.html</wfw:comment><comments>http://www.blogjava.net/echoseason/archive/2014/10/21/418918.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/echoseason/comments/commentRss/418918.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/echoseason/services/trackbacks/418918.html</trackback:ping><description><![CDATA[ 多数据源，就是在同一张报表当中，显示的数据来自于多个不同的表或不同的库。
如下图一张简单的多数据源报表，左侧蓝色部分来自于销量表，右侧黄色部分来自销售总额表，即数据来自于两张不同的数据库表。
报表多数据源
多数据源报表传统的做法，是通过拼SQL将多源整合为单源。如上例中将销量表与销售总额表整合起来：SELECT * FROM [销量],[销售总额] WHERE [销量].销售员 = [销售总额].销售员 。若数据库表比较负杂，且使用的表个数不止2张而是更多时，可以想象，最终的SQL查询语句将会非常复杂。
FineReport天然支持多数据源的报表，一张报表中可以添加任意多个数据集，每个数据集使用最简单的SQL语句查询出需要的表数据，在报表中只需要使用过滤就可以将来自不同表的数据相互关联起来。使得多数据源报表制作更加简单。
原文转载自：http://www.finereport.com/knowledge/professional/multidata.html<img src ="http://www.blogjava.net/echoseason/aggbug/418918.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/echoseason/" target="_blank">season</a> 2014-10-21 19:01 <a href="http://www.blogjava.net/echoseason/archive/2014/10/21/418918.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>离线填报</title><link>http://www.blogjava.net/echoseason/archive/2014/10/21/418917.html</link><dc:creator>season</dc:creator><author>season</author><pubDate>Tue, 21 Oct 2014 10:52:00 GMT</pubDate><guid>http://www.blogjava.net/echoseason/archive/2014/10/21/418917.html</guid><wfw:comment>http://www.blogjava.net/echoseason/comments/418917.html</wfw:comment><comments>http://www.blogjava.net/echoseason/archive/2014/10/21/418917.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/echoseason/comments/commentRss/418917.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/echoseason/services/trackbacks/418917.html</trackback:ping><description><![CDATA[ 报表离线填报
离线报表填报，顾名思义就是指在离线未联网的状态下，对数据进行填报，离线填报主要应用于以下几个方面：
1、用户在联网的状态下打开报表对数据进行填报，由于某种客观原因比如说网络中断，导致数据不能直接提交到服务器数据库里面去；
2、用户需要去断网的环境下收集数据，比如说车间，使用FineReport填报报表无法访问远程模板，如果直接用Excel去收集数据，无法实现控件联动、数据校验等等FineReport专有的功能效果。
离线填报步骤
离线填报主要包括三个步骤：
离线报表填报
离线填报原理
FR7.1版本推出的离线填报，其实现原理是可以通过上面讲述的三个步骤来详细讲述。
在联网的情况下在web端打开预览服务器上的报表，将报表输出为离线html报表，导出结果为一个压缩包，压缩包内有一个与压缩包同名的文件夹，当导出离线html之后，可以将该导出的压缩包或文件夹转移到没网的环境下，比如说拷贝该压缩包至一台没有网络的机器上或者直接将本机断网，解压之后，直接双击打开html，在浏览器端对数据进行录入，支持控件显示，联动，公式计算，数据校验等等报表的基本功能，数据录入完成之后，将数据暂时保存在本地的浏览器中，然后当在有网的情况下再点击html工具栏上的提交按钮，将数据提交入库。
注：离线填报数据是保存在本地的浏览器中的，如果数据录入之后将html关闭，下次再在同一浏览器中打开，数据还会存在，但是如果换一台电脑或者浏览器，那么之前录入的数据将不会跟随
原文转载自：http://www.finereport.com/knowledge/professional/offline.html<img src ="http://www.blogjava.net/echoseason/aggbug/418917.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/echoseason/" target="_blank">season</a> 2014-10-21 18:52 <a href="http://www.blogjava.net/echoseason/archive/2014/10/21/418917.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>数据展示</title><link>http://www.blogjava.net/echoseason/archive/2014/10/21/418916.html</link><dc:creator>season</dc:creator><author>season</author><pubDate>Tue, 21 Oct 2014 10:50:00 GMT</pubDate><guid>http://www.blogjava.net/echoseason/archive/2014/10/21/418916.html</guid><wfw:comment>http://www.blogjava.net/echoseason/comments/418916.html</wfw:comment><comments>http://www.blogjava.net/echoseason/archive/2014/10/21/418916.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/echoseason/comments/commentRss/418916.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/echoseason/services/trackbacks/418916.html</trackback:ping><description><![CDATA[ 为了更好的分析数据，人们在一直追求更好的数据展示方法，从原点到现在，数据展示都有哪些形态呢？笔者就拿几个典型给大家聊聊数据展示的演变历程。
数据展示的演变和发展
首先是写在纸上的豆腐帐，白纸黑字，一条条数据都躺在那里，如果要检索或者统计，可就麻烦了，要一点一点扒。幸好过段时间有了计算机，而微软也推出了excel，这可是划时代的产品。于是，人们开始了在excel中记账、汇总、分析数据。为了让数据更易读，大家开始追求图表展示，各种柱形图、饼图、折线图、面积图等被塑造出来。到这一阶段，数据还都是静态的，基本上没有交互性，可读性更差。于是交互性更强数据展示和图表渐渐产生，比如数据钻取、数据追踪、数据联动、图表系列交互、图表数据点提示、图表实时刷新、图表联动、图表数据预设调整等数据展示效果。到此时，数据展示已经到了一个新的阶段。
数字、图表来展现数据，其实是对某一个事件的&#8220;精华提取&#8221;，只能显示一部分，看过《钢铁侠3》的朋友都知道，男主人公tony还原爆炸现场的时候，是通过现场画面模型来的，这里面有了太多的数据！所以，笔者大胆预测，未来数据将以场景模型来展示。
数据展示软件
数据展示软件即报表软件。以下是几种主流报表软件的功能介绍和功能对比：
                                             类excel报表                                                              web报表打印功能对比
                               FineReport报表工具和水晶报表                               主流web报表设计模式易调整对比
 
FineReport在数据展示上的优势
帆软FineReport是中国报表软件的领导品牌，数据展示功能强大。用户通过PC端或移动端访问报表，可以进行丰富多样的图表分析、钻取分析、多维度分析、自定义分析、多维数据钻取、数据联动、图表联动、多样控件查询和即时分析等，更好的阅读报表数据，发现数据的价值。
数据展示平台
本文转载自：http://www.finereport.com/knowledge/professional/datadisplay.html<img src ="http://www.blogjava.net/echoseason/aggbug/418916.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/echoseason/" target="_blank">season</a> 2014-10-21 18:50 <a href="http://www.blogjava.net/echoseason/archive/2014/10/21/418916.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>FineReport图表综合介绍</title><link>http://www.blogjava.net/echoseason/archive/2014/10/20/418891.html</link><dc:creator>season</dc:creator><author>season</author><pubDate>Mon, 20 Oct 2014 08:58:00 GMT</pubDate><guid>http://www.blogjava.net/echoseason/archive/2014/10/20/418891.html</guid><wfw:comment>http://www.blogjava.net/echoseason/comments/418891.html</wfw:comment><comments>http://www.blogjava.net/echoseason/archive/2014/10/20/418891.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/echoseason/comments/commentRss/418891.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/echoseason/services/trackbacks/418891.html</trackback:ping><description><![CDATA[ 对于纯粹的数据展示，客户一般都不会感觉很友好，这就有了用图表展示数据的需求。FineReport通过不断积累和创新，拥有了越来越强大的图表功能。
图表数据源
制作图表首先需要图表数据源，通常的图表软件只能支持单元格数据源。但是有些情况下，制作图表一定要使用数据集数据源而不是单元格数据源。例如当报表分为两部分，左侧以表格形式展现当年的销售收入，右侧则以图表展现销售利润与销售收入的比较的时候。这时，如果没有数据集数据源，就只能通过隐藏格子数据源来实现。在报表中隐藏数据有两个不妥处一是报表本身不安全，二是性能也会变差。FineReport在这方面完全不用担心，它支持数据集数据源和单元格数据源两种设计方式，能满足各种报表需求。
FineReport支持图表功能（原文转载自：http://www.finereport.com/knowledge/chart/typedescription.html）
FineReport支持各种图表及混合图表，以及一些图表交互、参数联动、热点链接、在线切换图表等非常实用的功能，还能进行各种样式设置，能满足客户的的各种需求，实现丰富的报表展现效果。
FineReport图表样式
目前为止，FineReport报表工具已经实现了柱形图（7种）、折线图（1种）、条形图（7种）、饼图（2种）、面积图（4种）、散点图（1种）、气泡图（1种）、雷达图（1种）、股价图（1种）、仪表盘（1种）、全距图（1种）、组合图（1种）、地图（4种）、甘特图（1种）、gis地图（2种）、圆环图（2种）等总共16种样式，37种图表, 图表可放置在悬浮元素中以任意拖动位置，也可固定在单元格中，同时提供了多种图形组合设计，能够满足大部分客户的各种需求。
几种基本图表样式如下所示：
柱形图
柱形图种类：柱形图、堆积柱形图、百分比堆积柱形图、三维柱形图、三维柱形图（横向）、三维堆积柱形图、三维百分比堆积柱形图。
柱形图
折线图
折线图
条形图
条形图种类：条形图、堆积条形图、百分比堆积条形图、三维条形图、三维条形图（横向）、三维堆积条形图、三维百分比堆积条形图。
条形图
饼图
饼图种类：饼图、三维饼图。
饼图
面积图
面积图种类：堆积面积图、百分比堆积面积图、三维堆积面积图、三维百分比堆积面积图。
面积图
散点图
散点图
气泡图
气泡图
雷达图
雷达图
甘特图
甘特图
组合图
组合图
原文转载自：http://www.finereport.com/knowledge/chart/typedescription.html<img src ="http://www.blogjava.net/echoseason/aggbug/418891.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/echoseason/" target="_blank">season</a> 2014-10-20 16:58 <a href="http://www.blogjava.net/echoseason/archive/2014/10/20/418891.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>FineReport图表详述之图表交互功能</title><link>http://www.blogjava.net/echoseason/archive/2014/10/20/418888.html</link><dc:creator>season</dc:creator><author>season</author><pubDate>Mon, 20 Oct 2014 08:52:00 GMT</pubDate><guid>http://www.blogjava.net/echoseason/archive/2014/10/20/418888.html</guid><wfw:comment>http://www.blogjava.net/echoseason/comments/418888.html</wfw:comment><comments>http://www.blogjava.net/echoseason/archive/2014/10/20/418888.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/echoseason/comments/commentRss/418888.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/echoseason/services/trackbacks/418888.html</trackback:ping><description><![CDATA[统计图表是用来直观的反应数据信息的，在浏览图表时，如果鼠标点击某处，希望能突出数据信息的详细情况来实现图表丰富的展现效果。
图表交互意在图表中为使用网页语言如信息提示、颜色高亮、钻取等来表达产品要告诉用户的信息，让用户获得更好更舒适的体验。FineReport有着图表交互这一强大的功能，通过在图表中使用如信息提示、颜色高亮、钻取等来表达产品要告诉用户的信息，让用户获得更好更舒适的体验。
在查看报表时，通过交互属性设置，FineReport能实现丰富的图表展现效果，如数据点值提示、数据点值比例提示、坐标提示、坐标轴缩放、图表自动刷新、超级链接等。并且FineReport的交互属性设置非常的简单，单击选中图表，选择图表属性表-特效，点击交互属性选项，就可以轻松的设置了。
图表交互设置图示
数据点提示
在B/S端浏览时，当鼠标移动到图表，如移动到柱状图的对应块处，就会显示相应的信息，
图表交互效果图1
坐标轴交互图（显示坐标）
当鼠标移动到图表的某个数值点时，提示对应的坐标轴信息
图表交互效果图2
坐标轴交互图（缩放坐标）
当鼠标移动分类轴，值轴时，对应的进行缩放，例如对上图进行分类轴的缩放，只显示10月到12月的数据
图表交互效果图3
图表链接
图表链接即不同图表之间进行关联显示，这种关联方式主要有三种，图表热点链接、图表联动以及在对话框中弹出图表。
图表热点链接
FineReport设计器不仅可以实现单元格之间的数据钻取，同时还可以满足图表之间的数据钻取，即表示点击图表的系列可钻取到另外一张图表，看到该系列的其他数据，如下图：
图表热点链接
图表联动
图表热点链接是图表在两张模板中，而图表联动是在一张模板中，点击图表的某个系列或者标签，其他的图表跟着变化，显示被点击系列或标签的关联值，如下图：
图表联动图示
图表对话框显示
图表除了可以在模板中显示，还可以在对话框显示，前面介绍了两张模板之间的图表关联，一张模板间的图表关联，那么模板和对话框中的图表关联即为图表对话框显示，点击图表的某个系列时，弹出对话框，该对话框中为该系列的图表数据，如下图：
图表对话框显示示意


原文转载自：http://www.finereport.com/knowledge/chart/interaction.html<img src ="http://www.blogjava.net/echoseason/aggbug/418888.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/echoseason/" target="_blank">season</a> 2014-10-20 16:52 <a href="http://www.blogjava.net/echoseason/archive/2014/10/20/418888.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>报表finereport根据参数将数据存入不同的数据库</title><link>http://www.blogjava.net/echoseason/archive/2013/06/15/400584.html</link><dc:creator>season</dc:creator><author>season</author><pubDate>Sat, 15 Jun 2013 15:09:00 GMT</pubDate><guid>http://www.blogjava.net/echoseason/archive/2013/06/15/400584.html</guid><wfw:comment>http://www.blogjava.net/echoseason/comments/400584.html</wfw:comment><comments>http://www.blogjava.net/echoseason/archive/2013/06/15/400584.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/echoseason/comments/commentRss/400584.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/echoseason/services/trackbacks/400584.html</trackback:ping><description><![CDATA[<div class="Section0" style="layout-grid:  15.6pt none">
<p class="p0" style="margin-bottom: 0pt; text-align: left; margin-top: 0pt"><span style="font-size: 18pt; font-family: '微软雅黑'; color: rgb(51,51,51); mso-spacerun: 'yes'"></span><span style="font-size: 18pt; font-family: '微软雅黑'; color: rgb(51,51,51); mso-spacerun: 'yes'"><o:p></o:p></span>&nbsp;</p>
<p class="p0" style="margin-bottom: 0pt; text-align: left; margin-top: 0pt; mso-line-height-alt: 12pt"><span style="font-size: 12pt; font-family: '微软雅黑'; font-weight: bold; color: rgb(56,56,56); mso-spacerun: 'yes'">1.&nbsp;问题描述</span><span style="font-size: 12pt; font-family: '微软雅黑'; font-weight: bold; color: rgb(56,56,56); mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-bottom: 0pt; margin-top: 0pt; line-height: 16.5pt; text-indent: 16.5pt"><span style="font-size: 10.5pt; font-family: '微软雅黑'; color: rgb(56,56,56); mso-spacerun: 'yes'">客户的用户群体很大，涵盖范围很广，为了数据安全，所以将不同区域的数据存在不同的数据库中。同时考虑到开发工作和后期的维护等，将这些数据的业务在同一张表里显示（这些业务关系一样，在数据库中表的字段都一样）。所以在数据录入时，需要根据用户所在的区域，将用户录入的数据存入不同的数据库表中。</span><span style="font-size: 10.5pt; font-family: '微软雅黑'; color: rgb(56,56,56); mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-bottom: 0pt; text-align: left; margin-top: 0pt; mso-line-height-alt: 12pt"><span style="font-size: 12pt; font-family: '微软雅黑'; font-weight: bold; color: rgb(56,56,56); mso-spacerun: 'yes'">2.&nbsp;解决思路</span><span style="font-size: 12pt; font-family: '微软雅黑'; font-weight: bold; color: rgb(56,56,56); mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-bottom: 0pt; margin-top: 0pt; line-height: 16.5pt; text-indent: 16.5pt"><span style="font-size: 10.5pt; font-family: '微软雅黑'; color: rgb(56,56,56); mso-spacerun: 'yes'">在模板中建几个隐藏的按钮控件，分别设置提交事件，触发提交入库，再在工具栏上或者模板中设置自定义按钮，编写js，根据不同的参数触发不同的按钮，实现根据不同的参数提交到对应的数据库功能。</span><span style="font-size: 10.5pt; font-family: '微软雅黑'; color: rgb(56,56,56); mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-bottom: 0pt; text-align: left; margin-top: 0pt; mso-line-height-alt: 12pt"><span style="font-size: 12pt; font-family: '微软雅黑'; font-weight: bold; color: rgb(56,56,56); mso-spacerun: 'yes'">3.&nbsp;示例</span><span style="font-size: 12pt; font-family: '微软雅黑'; font-weight: bold; color: rgb(56,56,56); mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-bottom: 0pt; margin-top: 0pt; line-height: 16.5pt; text-indent: 16.5pt"><span style="font-size: 10.5pt; font-family: '微软雅黑'; color: rgb(56,56,56); mso-spacerun: 'yes'">我们的FRDemo数据库中有2张表S订单和订单，这两张表的数据结构一模一样，选择华东，华中，华北地区的数据时，数据填入数据库</span><span style="font-size: 10.5pt; font-family: '微软雅黑'; font-weight: bold; color: rgb(0,128,128); mso-spacerun: 'yes'">S订单</span><span style="font-size: 10.5pt; font-family: '微软雅黑'; color: rgb(56,56,56); mso-spacerun: 'yes'">，选择其他地区时，数据填入数据库</span><span style="font-size: 10.5pt; font-family: '微软雅黑'; font-weight: bold; color: rgb(0,128,128); mso-spacerun: 'yes'">订单</span><span style="font-size: 10.5pt; font-family: '微软雅黑'; color: rgb(56,56,56); mso-spacerun: 'yes'">。</span><span style="font-size: 10.5pt; font-family: '微软雅黑'; color: rgb(56,56,56); mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-bottom: 0pt; text-align: left; margin-top: 0pt; line-height: 16.5pt"><span style="font-size: 11.5pt; font-family: '微软雅黑'; font-weight: bold; color: rgb(56,56,56); mso-spacerun: 'yes'">3.1&nbsp;数据准备</span><span style="font-size: 11.5pt; font-family: '微软雅黑'; font-weight: bold; color: rgb(56,56,56); mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-bottom: 0pt; margin-top: 0pt; line-height: 16.5pt; text-indent: 16.5pt"><span style="font-size: 10.5pt; font-family: '微软雅黑'; color: rgb(56,56,56); mso-spacerun: 'yes'">新建模板，新建数据集ds1：</span><span style="font-size: 10.5pt; font-family: '微软雅黑'; font-weight: bold; color: rgb(95,158,160); mso-spacerun: 'yes'">SELECT&nbsp;*&nbsp;FROM&nbsp;[订单]&nbsp;where&nbsp;货主地区='${地区}'</span><span style="font-size: 10.5pt; font-family: '微软雅黑'; color: rgb(56,56,56); mso-spacerun: 'yes'">。</span><span style="font-size: 10.5pt; font-family: '微软雅黑'; color: rgb(56,56,56); mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-bottom: 0pt; text-align: left; margin-top: 0pt; line-height: 16.5pt"><span style="font-size: 11.5pt; font-family: '微软雅黑'; font-weight: bold; color: rgb(56,56,56); mso-spacerun: 'yes'">3.2&nbsp;参数界面设置</span><span style="font-size: 11.5pt; font-family: '微软雅黑'; font-weight: bold; color: rgb(56,56,56); mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-bottom: 0pt; margin-top: 0pt; line-height: 16.5pt; text-indent: 16.5pt"><span style="font-size: 10.5pt; font-family: '微软雅黑'; color: rgb(56,56,56); mso-spacerun: 'yes'">切换到参数设计界面，将地区参数的控件添加到面板中，数据字典设置如下：</span><span style="font-size: 10.5pt; font-family: '微软雅黑'; color: rgb(56,56,56); mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-bottom: 0pt; margin-top: 0pt; line-height: 16.5pt; text-indent: 16.5pt"><span style="font-size: 10.5pt; font-family: '微软雅黑'; color: rgb(56,56,56); mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-bottom: 0pt; text-align: left; margin-top: 0pt; line-height: 16.5pt"><span style="font-size: 11.5pt; font-family: '微软雅黑'; font-weight: bold; color: rgb(56,56,56); mso-spacerun: 'yes'"><img border="0" alt="" src="http://www.blogjava.net/images/blogjava_net/echoseason/web1.png" /><br />3.3&nbsp;报表主体设计</span><span style="font-size: 11.5pt; font-family: '微软雅黑'; font-weight: bold; color: rgb(56,56,56); mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-bottom: 0pt; margin-top: 0pt; line-height: 16.5pt; text-indent: 16.5pt"><span style="font-size: 10.5pt; font-family: '微软雅黑'; color: rgb(56,56,56); mso-spacerun: 'yes'">这里为了简洁方便，只添加了几个控件，并没有将所有数据列都添加一个控件，如下图：</span><span style="font-size: 10.5pt; font-family: '微软雅黑'; color: rgb(56,56,56); mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-bottom: 0pt; margin-top: 0pt; line-height: 16.5pt; text-indent: 16.5pt"><span style="font-size: 10.5pt; font-family: '微软雅黑'; color: rgb(56,56,56); mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-bottom: 0pt; margin-top: 0pt; line-height: 16.5pt; text-indent: 16.5pt"><span style="font-size: 10.5pt; font-family: '微软雅黑'; color: rgb(56,56,56); mso-spacerun: 'yes'"><img border="0" alt="" src="http://www.blogjava.net/images/blogjava_net/echoseason/web2.png" /><br />其中第5行中为填报控件，控件设置如下表：</span><span style="font-size: 10.5pt; font-family: '微软雅黑'; color: rgb(56,56,56); mso-spacerun: 'yes'"><o:p></o:p></span></p>
<table style="border-collapse: collapse; padding-bottom: 0.75pt; padding-top: 0.75pt; padding-left: 0.75pt; margin-left: 24.15pt; padding-right: 0.75pt; mso-table-layout-alt: fixed">
<tbody>
<tr>
<td style="border-top: rgb(255,255,255) 31.875pt; border-right: rgb(255,255,255) 31.875pt; border-bottom: rgb(255,255,255) 31.875pt; padding-bottom: 3pt; padding-top: 3.75pt; padding-left: 3.75pt; border-left: rgb(255,255,255) 31.875pt; padding-right: 3.75pt; width: 36.4pt; mso-border-left-alt: 31.8750pt none rgb(255,255,255); mso-border-right-alt: 31.8750pt none rgb(255,255,255); mso-border-top-alt: 31.8750pt none rgb(255,255,255); mso-border-bottom-alt: 31.8750pt none rgb(255,255,255)" valign="middle" width="48">
<p class="p0" style="margin-bottom: 6pt; text-align: left; margin-top: 6pt"><span style="font-size: 10.5pt; font-family: '微软雅黑'; color: rgb(105,105,105); mso-spacerun: 'yes'">控件类型</span><span style="font-size: 10.5pt; font-family: '微软雅黑'; color: rgb(105,105,105)"><o:p></o:p></span></p></td>
<td style="border-top: rgb(255,255,255) 31.875pt; border-right: rgb(255,255,255) 31.875pt; border-bottom: rgb(255,255,255) 31.875pt; padding-bottom: 3pt; padding-top: 3.75pt; padding-left: 3.75pt; border-left: medium none; padding-right: 3.75pt; width: 34.7pt; mso-border-left-alt: none; mso-border-right-alt: 31.8750pt none rgb(255,255,255); mso-border-top-alt: 31.8750pt none rgb(255,255,255); mso-border-bottom-alt: 31.8750pt none rgb(255,255,255)" valign="middle" width="46">
<p class="p0" style="margin-bottom: 6pt; text-align: left; margin-top: 6pt"><span style="font-size: 10.5pt; font-family: '微软雅黑'; color: rgb(105,105,105); mso-spacerun: 'yes'">数据字典</span><span style="font-size: 10.5pt; font-family: '微软雅黑'; color: rgb(105,105,105)"><o:p></o:p></span></p></td></tr>
<tr>
<td style="border-top: medium none; border-right: rgb(255,255,255) 31.875pt; border-bottom: rgb(255,255,255) 31.875pt; padding-bottom: 3pt; padding-top: 3.75pt; padding-left: 3.75pt; border-left: rgb(255,255,255) 31.875pt; padding-right: 3.75pt; width: 36.4pt; mso-border-left-alt: 31.8750pt none rgb(255,255,255); mso-border-right-alt: 31.8750pt none rgb(255,255,255); mso-border-top-alt: 31.8750pt none rgb(255,255,255); mso-border-bottom-alt: 31.8750pt none rgb(255,255,255)" valign="middle" width="48">
<p class="p0" style="margin-bottom: 6pt; text-align: left; margin-top: 6pt"><span style="font-size: 10.5pt; font-family: '微软雅黑'; color: rgb(105,105,105); mso-spacerun: 'yes'">B5</span><span style="font-size: 10.5pt; font-family: '微软雅黑'; color: rgb(105,105,105)"><o:p></o:p></span></p></td>
<td style="border-top: medium none; border-right: rgb(255,255,255) 31.875pt; border-bottom: rgb(255,255,255) 31.875pt; padding-bottom: 3pt; padding-top: 3.75pt; padding-left: 3.75pt; border-left: medium none; padding-right: 3.75pt; width: 34.7pt; mso-border-left-alt: none; mso-border-right-alt: 31.8750pt none rgb(255,255,255); mso-border-top-alt: 31.8750pt none rgb(255,255,255); mso-border-bottom-alt: 31.8750pt none rgb(255,255,255)" valign="middle" width="46">
<p class="p0" style="margin-bottom: 6pt; text-align: left; margin-top: 6pt"><span style="font-size: 10.5pt; font-family: '微软雅黑'; color: rgb(105,105,105); mso-spacerun: 'yes'">文本框</span><span style="font-size: 10.5pt; font-family: '微软雅黑'; color: rgb(105,105,105)"><o:p></o:p></span></p></td>
<td style="border-top: rgb(255,255,255) 31.875pt; border-right: rgb(255,255,255) 31.875pt; border-bottom: rgb(255,255,255) 31.875pt; padding-bottom: 3pt; padding-top: 3.75pt; padding-left: 3.75pt; border-left: medium none; padding-right: 3.75pt; width: 267.15pt; mso-border-left-alt: none; mso-border-right-alt: 31.8750pt none rgb(255,255,255); mso-border-top-alt: 31.8750pt none rgb(255,255,255); mso-border-bottom-alt: 31.8750pt none rgb(255,255,255)" valign="middle" width="356">
<p class="p0" style="margin-bottom: 6pt; text-align: left; margin-top: 6pt"><span style="font-size: 10.5pt; font-family: '微软雅黑'; color: rgb(105,105,105)">无</span><span style="font-size: 10.5pt; font-family: '微软雅黑'; color: rgb(105,105,105)"><o:p></o:p></span></p></td></tr>
<tr>
<td style="border-top: medium none; border-right: rgb(255,255,255) 31.875pt; border-bottom: rgb(255,255,255) 31.875pt; padding-bottom: 3pt; padding-top: 3.75pt; padding-left: 3.75pt; border-left: rgb(255,255,255) 31.875pt; padding-right: 3.75pt; width: 36.4pt; mso-border-left-alt: 31.8750pt none rgb(255,255,255); mso-border-right-alt: 31.8750pt none rgb(255,255,255); mso-border-top-alt: 31.8750pt none rgb(255,255,255); mso-border-bottom-alt: 31.8750pt none rgb(255,255,255)" valign="middle" width="48">
<p class="p0" style="margin-bottom: 6pt; text-align: left; margin-top: 6pt"><span style="font-size: 10.5pt; font-family: '微软雅黑'; color: rgb(105,105,105); mso-spacerun: 'yes'">C5</span><span style="font-size: 10.5pt; font-family: '微软雅黑'; color: rgb(105,105,105)"><o:p></o:p></span></p></td>
<td style="border-top: medium none; border-right: rgb(255,255,255) 31.875pt; border-bottom: rgb(255,255,255) 31.875pt; padding-bottom: 3pt; padding-top: 3.75pt; padding-left: 3.75pt; border-left: medium none; padding-right: 3.75pt; width: 34.7pt; mso-border-left-alt: none; mso-border-right-alt: 31.8750pt none rgb(255,255,255); mso-border-top-alt: 31.8750pt none rgb(255,255,255); mso-border-bottom-alt: 31.8750pt none rgb(255,255,255)" valign="middle" width="46">
<p class="p0" style="margin-bottom: 6pt; text-align: left; margin-top: 6pt"><span style="font-size: 10.5pt; font-family: '微软雅黑'; color: rgb(105,105,105); mso-spacerun: 'yes'">下拉框</span><span style="font-size: 10.5pt; font-family: '微软雅黑'; color: rgb(105,105,105)"><o:p></o:p></span></p></td>
<td style="border-top: medium none; border-right: rgb(255,255,255) 31.875pt; border-bottom: rgb(255,255,255) 31.875pt; padding-bottom: 3pt; padding-top: 3.75pt; padding-left: 3.75pt; border-left: medium none; padding-right: 3.75pt; width: 267.15pt; mso-border-left-alt: none; mso-border-right-alt: 31.8750pt none rgb(255,255,255); mso-border-top-alt: 31.8750pt none rgb(255,255,255); mso-border-bottom-alt: 31.8750pt none rgb(255,255,255)" valign="middle" width="356">
<p class="p0" style="margin-bottom: 6pt; text-align: left; margin-top: 6pt"><span style="font-size: 10.5pt; font-family: '微软雅黑'; color: rgb(105,105,105); mso-spacerun: 'yes'">来源于客户表，实际值客户ID，显示值公司名称</span><span style="font-size: 10.5pt; font-family: '微软雅黑'; color: rgb(105,105,105)"><o:p></o:p></span></p></td></tr>
<tr>
<td style="border-top: medium none; border-right: rgb(255,255,255) 31.875pt; border-bottom: rgb(255,255,255) 31.875pt; padding-bottom: 3pt; padding-top: 3.75pt; padding-left: 3.75pt; border-left: rgb(255,255,255) 31.875pt; padding-right: 3.75pt; width: 36.4pt; mso-border-left-alt: 31.8750pt none rgb(255,255,255); mso-border-right-alt: 31.8750pt none rgb(255,255,255); mso-border-top-alt: 31.8750pt none rgb(255,255,255); mso-border-bottom-alt: 31.8750pt none rgb(255,255,255)" valign="middle" width="48">
<p class="p0" style="margin-bottom: 6pt; text-align: left; margin-top: 6pt"><span style="font-size: 10.5pt; font-family: '微软雅黑'; color: rgb(105,105,105); mso-spacerun: 'yes'">D5</span><span style="font-size: 10.5pt; font-family: '微软雅黑'; color: rgb(105,105,105)"><o:p></o:p></span></p></td>
<td style="border-top: medium none; border-right: rgb(255,255,255) 31.875pt; border-bottom: rgb(255,255,255) 31.875pt; padding-bottom: 3pt; padding-top: 3.75pt; padding-left: 3.75pt; border-left: medium none; padding-right: 3.75pt; width: 34.7pt; mso-border-left-alt: none; mso-border-right-alt: 31.8750pt none rgb(255,255,255); mso-border-top-alt: 31.8750pt none rgb(255,255,255); mso-border-bottom-alt: 31.8750pt none rgb(255,255,255)" valign="middle" width="46">
<p class="p0" style="margin-bottom: 6pt; text-align: left; margin-top: 6pt"><span style="font-size: 10.5pt; font-family: '微软雅黑'; color: rgb(105,105,105); mso-spacerun: 'yes'">下拉框</span><span style="font-size: 10.5pt; font-family: '微软雅黑'; color: rgb(105,105,105)"><o:p></o:p></span></p></td>
<td style="border-top: medium none; border-right: rgb(255,255,255) 31.875pt; border-bottom: rgb(255,255,255) 31.875pt; padding-bottom: 3pt; padding-top: 3.75pt; padding-left: 3.75pt; border-left: medium none; padding-right: 3.75pt; width: 267.15pt; mso-border-left-alt: none; mso-border-right-alt: 31.8750pt none rgb(255,255,255); mso-border-top-alt: 31.8750pt none rgb(255,255,255); mso-border-bottom-alt: 31.8750pt none rgb(255,255,255)" valign="middle" width="356">
<p class="p0" style="margin-bottom: 6pt; text-align: left; margin-top: 6pt"><span style="font-size: 10.5pt; font-family: '微软雅黑'; color: rgb(105,105,105); mso-spacerun: 'yes'">来源于雇员表，实际值雇员ID，显示值姓名</span><span style="font-size: 10.5pt; font-family: '微软雅黑'; color: rgb(105,105,105)"><o:p></o:p></span></p></td></tr>
<tr>
<td style="border-top: medium none; border-right: rgb(255,255,255) 31.875pt; border-bottom: rgb(255,255,255) 31.875pt; padding-bottom: 3pt; padding-top: 3.75pt; padding-left: 3.75pt; border-left: rgb(255,255,255) 31.875pt; padding-right: 3.75pt; width: 36.4pt; mso-border-left-alt: 31.8750pt none rgb(255,255,255); mso-border-right-alt: 31.8750pt none rgb(255,255,255); mso-border-top-alt: 31.8750pt none rgb(255,255,255); mso-border-bottom-alt: 31.8750pt none rgb(255,255,255)" valign="middle" width="48">
<p class="p0" style="margin-bottom: 6pt; text-align: left; margin-top: 6pt"><span style="font-size: 10.5pt; font-family: '微软雅黑'; color: rgb(105,105,105); mso-spacerun: 'yes'">E5</span><span style="font-size: 10.5pt; font-family: '微软雅黑'; color: rgb(105,105,105)"><o:p></o:p></span></p></td>
<td style="border-top: medium none; border-right: rgb(255,255,255) 31.875pt; border-bottom: rgb(255,255,255) 31.875pt; padding-bottom: 3pt; padding-top: 3.75pt; padding-left: 3.75pt; border-left: medium none; padding-right: 3.75pt; width: 34.7pt; mso-border-left-alt: none; mso-border-right-alt: 31.8750pt none rgb(255,255,255); mso-border-top-alt: 31.8750pt none rgb(255,255,255); mso-border-bottom-alt: 31.8750pt none rgb(255,255,255)" valign="middle" width="46">
<p class="p0" style="margin-bottom: 6pt; text-align: left; margin-top: 6pt"><span style="font-size: 10.5pt; font-family: '微软雅黑'; color: rgb(105,105,105); mso-spacerun: 'yes'">文本框</span><span style="font-size: 10.5pt; font-family: '微软雅黑'; color: rgb(105,105,105)"><o:p></o:p></span></p></td>
<td style="border-top: medium none; border-right: rgb(255,255,255) 31.875pt; border-bottom: rgb(255,255,255) 31.875pt; padding-bottom: 3pt; padding-top: 3.75pt; padding-left: 3.75pt; border-left: medium none; padding-right: 3.75pt; width: 267.15pt; mso-border-left-alt: none; mso-border-right-alt: 31.8750pt none rgb(255,255,255); mso-border-top-alt: 31.8750pt none rgb(255,255,255); mso-border-bottom-alt: 31.8750pt none rgb(255,255,255)" valign="middle" width="356">
<p class="p0" style="margin-bottom: 6pt; text-align: left; margin-top: 6pt"><span style="font-size: 10.5pt; font-family: '微软雅黑'; color: rgb(105,105,105); mso-spacerun: 'yes'">wu</span><span style="font-size: 10.5pt; font-family: '微软雅黑'; color: rgb(105,105,105)"><o:p></o:p></span></p></td></tr>
<tr>
<td style="border-top: medium none; border-right: rgb(255,255,255) 31.875pt; border-bottom: rgb(255,255,255) 31.875pt; padding-bottom: 3pt; padding-top: 3.75pt; padding-left: 3.75pt; border-left: rgb(255,255,255) 31.875pt; padding-right: 3.75pt; width: 36.4pt; mso-border-left-alt: 31.8750pt none rgb(255,255,255); mso-border-right-alt: 31.8750pt none rgb(255,255,255); mso-border-top-alt: 31.8750pt none rgb(255,255,255); mso-border-bottom-alt: 31.8750pt none rgb(255,255,255)" valign="middle" width="48">
<p class="p0" style="margin-bottom: 6pt; text-align: left; margin-top: 6pt"><span style="font-size: 10.5pt; font-family: '微软雅黑'; color: rgb(105,105,105); mso-spacerun: 'yes'">F5</span><span style="font-size: 10.5pt; font-family: '微软雅黑'; color: rgb(105,105,105)"><o:p></o:p></span></p></td>
<td style="border-top: medium none; border-right: rgb(255,255,255) 31.875pt; border-bottom: rgb(255,255,255) 31.875pt; padding-bottom: 3pt; padding-top: 3.75pt; padding-left: 3.75pt; border-left: medium none; padding-right: 3.75pt; width: 34.7pt; mso-border-left-alt: none; mso-border-right-alt: 31.8750pt none rgb(255,255,255); mso-border-top-alt: 31.8750pt none rgb(255,255,255); mso-border-bottom-alt: 31.8750pt none rgb(255,255,255)" valign="middle" width="46">
<p class="p0" style="margin-bottom: 6pt; text-align: left; margin-top: 6pt"><span style="font-size: 10.5pt; font-family: '微软雅黑'; color: rgb(105,105,105); mso-spacerun: 'yes'">下拉框</span><span style="font-size: 10.5pt; font-family: '微软雅黑'; color: rgb(105,105,105)"><o:p></o:p></span></p></td>
<td style="border-top: medium none; border-right: rgb(255,255,255) 31.875pt; border-bottom: rgb(255,255,255) 31.875pt; padding-bottom: 3pt; padding-top: 3.75pt; padding-left: 3.75pt; border-left: medium none; padding-right: 3.75pt; width: 267.15pt; mso-border-left-alt: none; mso-border-right-alt: 31.8750pt none rgb(255,255,255); mso-border-top-alt: 31.8750pt none rgb(255,255,255); mso-border-bottom-alt: 31.8750pt none rgb(255,255,255)" valign="middle" width="356">
<p class="p0" style="margin-bottom: 6pt; text-align: left; margin-top: 6pt"><span style="font-size: 10.5pt; font-family: '微软雅黑'; color: rgb(105,105,105); mso-spacerun: 'yes'">公式：sql("FRDemo",&nbsp;"select&nbsp;货主城市&nbsp;from&nbsp;订单&nbsp;where&nbsp;货主地区='"&nbsp;+&nbsp;$地区&nbsp;+&nbsp;"'",&nbsp;1)</span><span style="font-size: 10.5pt; font-family: '微软雅黑'; color: rgb(105,105,105)"><o:p></o:p></span></p></td></tr></tbody></table>
<p class="p0" style="margin-bottom: 0pt; text-align: left; margin-top: 0pt; line-height: 16.5pt"><span style="font-size: 11.5pt; font-family: '微软雅黑'; font-weight: bold; color: rgb(56,56,56); mso-spacerun: 'yes'">3.4&nbsp;按钮设置</span><span style="font-size: 11.5pt; font-family: '微软雅黑'; font-weight: bold; color: rgb(56,56,56); mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-bottom: 0pt; margin-top: 0pt; line-height: 16.5pt; text-indent: 16.5pt"><span style="font-size: 10.5pt; font-family: '微软雅黑'; color: rgb(56,56,56); mso-spacerun: 'yes'">如上图，第2行中的三个按钮分别为进行提交入库操作的2个隐藏按钮和一个进行点击操作的可见按钮。</span><span style="font-size: 10.5pt; font-family: '微软雅黑'; color: rgb(56,56,56); mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-bottom: 5pt; text-align: left; margin-left: 36pt; margin-top: 5pt; line-height: 12pt; text-indent: -18pt"><span style="font-size: 10pt; font-family: 'Symbol'; font-weight: bold; color: rgb(0,0,139); mso-spacerun: 'yes'">&#183;&nbsp;</span><span style="font-size: 10.5pt; font-family: 'Arial'; font-weight: bold; color: rgb(0,0,139); mso-spacerun: 'yes'">E2<font face="宋体">单元格</font></span><span style="font-size: 10.5pt; font-family: '宋体'; font-weight: bold; color: rgb(0,0,139); mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-bottom: 0pt; margin-top: 0pt; line-height: 16.5pt; text-indent: 16.5pt"><span style="font-size: 10.5pt; font-family: '微软雅黑'; color: rgb(56,56,56); mso-spacerun: 'yes'">控件名为&#8220;s&#8221;，该控件控制S订单表的填报，添加一个点击事件，事件类型选择</span><span style="font-size: 10.5pt; font-family: '微软雅黑'; font-weight: bold; color: rgb(0,128,128); mso-spacerun: 'yes'">提交入库</span><span style="font-size: 10.5pt; font-family: '微软雅黑'; color: rgb(56,56,56); mso-spacerun: 'yes'">，如下图：</span><span style="font-size: 10.5pt; font-family: '微软雅黑'; color: rgb(56,56,56); mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-bottom: 0pt; margin-top: 0pt; line-height: 16.5pt; text-indent: 16.5pt"><span style="font-size: 10.5pt; font-family: '微软雅黑'; color: rgb(56,56,56); mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-bottom: 5pt; text-align: left; margin-left: 36pt; margin-top: 5pt; line-height: 12pt; text-indent: -18pt"><span style="font-size: 10pt; font-family: 'Symbol'; font-weight: bold; color: rgb(0,0,139); mso-spacerun: 'yes'"><img border="0" alt="" src="http://www.blogjava.net/images/blogjava_net/echoseason/web3.png" /><br />&#183;&nbsp;</span><span style="font-size: 10.5pt; font-family: 'Arial'; font-weight: bold; color: rgb(0,0,139); mso-spacerun: 'yes'">F2<font face="宋体">单元格</font></span><span style="font-size: 10.5pt; font-family: '宋体'; font-weight: bold; color: rgb(0,0,139); mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-bottom: 0pt; margin-top: 0pt; line-height: 16.5pt; text-indent: 16.5pt"><span style="font-size: 10.5pt; font-family: '微软雅黑'; color: rgb(56,56,56); mso-spacerun: 'yes'">控件名为&#8220;S1&#8221;，该控件控制订单表的填报，添加一个点击事件，事件类型选择</span><span style="font-size: 10.5pt; font-family: '微软雅黑'; font-weight: bold; color: rgb(0,128,128); mso-spacerun: 'yes'">提交入库</span><span style="font-size: 10.5pt; font-family: '微软雅黑'; color: rgb(56,56,56); mso-spacerun: 'yes'">，如下图：</span><span style="font-size: 10.5pt; font-family: '微软雅黑'; color: rgb(56,56,56); mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-bottom: 0pt; margin-top: 0pt; line-height: 16.5pt; text-indent: 16.5pt"><span style="font-size: 10.5pt; font-family: '微软雅黑'; color: rgb(56,56,56); mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-bottom: 0pt; margin-top: 0pt; line-height: 16.5pt; text-indent: 16.5pt"><span style="font-size: 10.5pt; font-family: '微软雅黑'; color: rgb(56,56,56); mso-spacerun: 'yes'"><img border="0" alt="" src="http://www.blogjava.net/images/blogjava_net/echoseason/web4.png" /><br />将E2单元格和F2单元格中的按钮都设置为不可见。</span><span style="font-size: 10.5pt; font-family: '微软雅黑'; color: rgb(56,56,56); mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-bottom: 5pt; text-align: left; margin-left: 36pt; margin-top: 5pt; line-height: 12pt; text-indent: -18pt"><span style="font-size: 10pt; font-family: 'Symbol'; font-weight: bold; color: rgb(0,0,139); mso-spacerun: 'yes'">&#183;&nbsp;</span><span style="font-size: 10.5pt; font-family: 'Arial'; font-weight: bold; color: rgb(0,0,139); mso-spacerun: 'yes'">H2<font face="宋体">单元格</font></span><span style="font-size: 10.5pt; font-family: '宋体'; font-weight: bold; color: rgb(0,0,139); mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-bottom: 0pt; margin-top: 0pt; line-height: 16.5pt; text-indent: 16.5pt"><span style="font-size: 10.5pt; font-family: '微软雅黑'; color: rgb(56,56,56); mso-spacerun: 'yes'">给该按钮添加一个点击事件，如下图：</span><span style="font-size: 10.5pt; font-family: '微软雅黑'; color: rgb(56,56,56); mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-bottom: 0pt; margin-top: 0pt; line-height: 16.5pt; text-indent: 16.5pt"><span style="font-size: 10.5pt; font-family: '微软雅黑'; color: rgb(56,56,56); mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-bottom: 0pt; margin-top: 0pt; line-height: 16.5pt; text-indent: 16.5pt"><span style="font-size: 10.5pt; font-family: '微软雅黑'; color: rgb(56,56,56); mso-spacerun: 'yes'"><img border="0" alt="" src="http://www.blogjava.net/images/blogjava_net/echoseason/web5.png" /><br />完整js如下：</span><span style="font-size: 10.5pt; font-family: '微软雅黑'; color: rgb(56,56,56); mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-bottom: 5pt;background: rgb(248,248,248); padding-bottom: 0pt; padding-top: 0pt; padding-left: 8pt; margin-left: 49.5pt; border-left: rgb(187,187,187) 0.75pt solid; margin-top: 5pt; padding-right: 0pt; text-indent: -18pt; mso-line-height-alt: 12pt; mso-border-left-alt: 0.7500pt solid rgb(187,187,187)"><span style="font-size: 9pt; font-family: 'Courier New'; color: rgb(0,0,0); mso-spacerun: 'yes'">1.&nbsp;</span><span style="font-size: 9pt; font-family: 'Courier New'; color: rgb(0,0,0); mso-spacerun: 'yes'">var&nbsp;s=contentPane.getWidgetByName(</span><span style="font-size: 9pt; font-family: 'Courier New'; color: rgb(42,0,255); mso-spacerun: 'yes'">"s"</span><span style="font-size: 9pt; font-family: 'Courier New'; color: rgb(0,0,0); mso-spacerun: 'yes'">);&nbsp;&nbsp;</span><span style="font-size: 9pt; font-family: '微软雅黑'; color: rgb(43,145,175); mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-bottom: 5pt;background: rgb(255,255,255); padding-bottom: 0pt; padding-top: 0pt; padding-left: 8pt; margin-left: 49.5pt; border-left: rgb(187,187,187) 0.75pt solid; margin-top: 5pt; padding-right: 0pt; text-indent: -18pt; mso-line-height-alt: 12pt; mso-border-left-alt: 0.7500pt solid rgb(187,187,187)"><span style="font-size: 9pt; font-family: 'Courier New'; color: rgb(0,0,0); mso-spacerun: 'yes'">2.&nbsp;</span><span style="font-size: 9pt; font-family: 'Courier New'; color: rgb(0,0,0); mso-spacerun: 'yes'">var&nbsp;s1=contentPane.getWidgetByName(</span><span style="font-size: 9pt; font-family: 'Courier New'; color: rgb(42,0,255); mso-spacerun: 'yes'">"s1"</span><span style="font-size: 9pt; font-family: 'Courier New'; color: rgb(0,0,0); mso-spacerun: 'yes'">);&nbsp;&nbsp;</span><span style="font-size: 9pt; font-family: 'Courier New'; color: rgb(43,145,175); mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-bottom: 5pt;background: rgb(248,248,248); padding-bottom: 0pt; padding-top: 0pt; padding-left: 8pt; margin-left: 49.5pt; border-left: rgb(187,187,187) 0.75pt solid; margin-top: 5pt; padding-right: 0pt; text-indent: -18pt; mso-line-height-alt: 12pt; mso-border-left-alt: 0.7500pt solid rgb(187,187,187)"><span style="font-size: 9pt; font-family: 'Courier New'; font-weight: bold; color: rgb(127,0,85); mso-spacerun: 'yes'">3.&nbsp;</span><span style="font-size: 9pt; font-family: 'Courier New'; font-weight: bold; color: rgb(127,0,85); mso-spacerun: 'yes'">if</span><span style="font-size: 9pt; font-family: 'Courier New'; color: rgb(0,0,0); mso-spacerun: 'yes'">(area==</span><span style="font-size: 9pt; font-family: 'Courier New'; color: rgb(42,0,255); mso-spacerun: 'yes'">'<font face="微软雅黑">华东</font><font face="Courier New">'</font></span><span style="font-size: 9pt; font-family: 'Courier New'; color: rgb(0,0,0); mso-spacerun: 'yes'">||area==</span><span style="font-size: 9pt; font-family: 'Courier New'; color: rgb(42,0,255); mso-spacerun: 'yes'">'<font face="微软雅黑">华北</font><font face="Courier New">'</font></span><span style="font-size: 9pt; font-family: 'Courier New'; color: rgb(0,0,0); mso-spacerun: 'yes'">||area==</span><span style="font-size: 9pt; font-family: 'Courier New'; color: rgb(42,0,255); mso-spacerun: 'yes'">'<font face="微软雅黑">华中</font><font face="Courier New">'</font></span><span style="font-size: 9pt; font-family: 'Courier New'; color: rgb(0,0,0); mso-spacerun: 'yes'">)&nbsp;&nbsp;</span><span style="font-size: 9pt; font-family: 'Courier New'; color: rgb(43,145,175); mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-bottom: 5pt;background: rgb(255,255,255); padding-bottom: 0pt; padding-top: 0pt; padding-left: 8pt; margin-left: 49.5pt; border-left: rgb(187,187,187) 0.75pt solid; margin-top: 5pt; padding-right: 0pt; text-indent: -18pt; mso-line-height-alt: 12pt; mso-border-left-alt: 0.7500pt solid rgb(187,187,187)"><span style="font-size: 9pt; font-family: 'Courier New'; color: rgb(0,0,0); mso-spacerun: 'yes'">4.&nbsp;</span><span style="font-size: 9pt; font-family: 'Courier New'; color: rgb(0,0,0); mso-spacerun: 'yes'">s.fireEvent(</span><span style="font-size: 9pt; font-family: 'Courier New'; color: rgb(42,0,255); mso-spacerun: 'yes'">"click"</span><span style="font-size: 9pt; font-family: 'Courier New'; color: rgb(0,0,0); mso-spacerun: 'yes'">);&nbsp;&nbsp;</span><span style="font-size: 9pt; font-family: 'Courier New'; color: rgb(43,145,175); mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-bottom: 5pt;background: rgb(248,248,248); padding-bottom: 0pt; padding-top: 0pt; padding-left: 8pt; margin-left: 49.5pt; border-left: rgb(187,187,187) 0.75pt solid; margin-top: 5pt; padding-right: 0pt; text-indent: -18pt; mso-line-height-alt: 12pt; mso-border-left-alt: 0.7500pt solid rgb(187,187,187)"><span style="font-size: 9pt; font-family: 'Courier New'; font-weight: bold; color: rgb(127,0,85); mso-spacerun: 'yes'">5.&nbsp;</span><span style="font-size: 9pt; font-family: 'Courier New'; font-weight: bold; color: rgb(127,0,85); mso-spacerun: 'yes'">else</span><span style="font-size: 9pt; font-family: 'Courier New'; color: rgb(0,0,0); mso-spacerun: 'yes'">&nbsp;&nbsp;</span><span style="font-size: 9pt; font-family: 'Courier New'; color: rgb(43,145,175); mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-bottom: 5pt;background: rgb(255,255,255); padding-bottom: 0pt; padding-top: 0pt; padding-left: 8pt; margin-left: 49.5pt; border-left: rgb(187,187,187) 0.75pt solid; margin-top: 5pt; padding-right: 0pt; text-indent: -18pt; mso-line-height-alt: 12pt; mso-border-left-alt: 0.7500pt solid rgb(187,187,187)"><span style="font-size: 9pt; font-family: 'Courier New'; color: rgb(0,0,0); mso-spacerun: 'yes'">6.&nbsp;</span><span style="font-size: 9pt; font-family: 'Courier New'; color: rgb(0,0,0); mso-spacerun: 'yes'">s1.fireEvent(</span><span style="font-size: 9pt; font-family: 'Courier New'; color: rgb(42,0,255); mso-spacerun: 'yes'">"click"</span><span style="font-size: 9pt; font-family: 'Courier New'; color: rgb(0,0,0); mso-spacerun: 'yes'">);&nbsp;&nbsp;</span><span style="font-size: 9pt; font-family: 'Courier New'; color: rgb(43,145,175); mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-bottom: 0pt; margin-top: 0pt; line-height: 16.5pt; text-indent: 16.5pt"><span style="font-size: 10.5pt; font-family: '微软雅黑'; color: rgb(56,56,56); mso-spacerun: 'yes'">该提交按钮也可自定在工具栏中，设置过程一样。</span><span style="font-size: 10.5pt; font-family: '微软雅黑'; color: rgb(56,56,56); mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-bottom: 0pt; text-align: left; margin-top: 0pt; line-height: 16.5pt"><span style="font-size: 11.5pt; font-family: '微软雅黑'; font-weight: bold; color: rgb(56,56,56); mso-spacerun: 'yes'">3.5&nbsp;效果查看</span><span style="font-size: 11.5pt; font-family: '微软雅黑'; font-weight: bold; color: rgb(56,56,56); mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-bottom: 0pt; margin-top: 0pt; line-height: 16.5pt; text-indent: 16.5pt"><span style="font-size: 10.5pt; font-family: '微软雅黑'; color: rgb(56,56,56); mso-spacerun: 'yes'">点击填报预览，参数选择华东，效果如下图：</span><span style="font-size: 10.5pt; font-family: '微软雅黑'; color: rgb(56,56,56); mso-spacerun: 'yes'">参数选择西南，效果如下图：<img border="0" alt="" src="http://www.blogjava.net/images/blogjava_net/echoseason/web6.png" /><br /></span><span style="font-size: 10.5pt; font-family: '微软雅黑'; color: rgb(56,56,56); mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-bottom: 0pt; margin-top: 0pt; line-height: 16.5pt; text-indent: 16.5pt"><span style="font-size: 10.5pt; font-family: '微软雅黑'; color: rgb(56,56,56); mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-bottom: 0pt; margin-top: 0pt; line-height: 16.5pt; text-indent: 16.5pt"><span style="font-size: 10.5pt; font-family: '微软雅黑'; color: rgb(255,0,0); mso-spacerun: 'yes'"><img border="0" alt="" src="http://www.blogjava.net/images/blogjava_net/echoseason/web7.gif" /><br />注：此例中由于数据的限制，只用了2张数据表进行填报，如果有多张表，则需要设置多个隐藏按钮。</span><span style="font-size: 10.5pt; font-family: '微软雅黑'; color: rgb(56,56,56); mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-bottom: 0pt; text-align: left; margin-top: 0pt"><span style="font-size: 18pt; font-family: '微软雅黑'; color: rgb(51,51,51); mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-bottom: 0pt; margin-top: 0pt"><span style="font-size: 10.5pt; font-family: 'Calibri'; mso-spacerun: 'yes'"><o:p></o:p></span></p></div><!--EndFragment--><img src ="http://www.blogjava.net/echoseason/aggbug/400584.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/echoseason/" target="_blank">season</a> 2013-06-15 23:09 <a href="http://www.blogjava.net/echoseason/archive/2013/06/15/400584.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>图表联动——三个图表的联动</title><link>http://www.blogjava.net/echoseason/archive/2013/06/15/400583.html</link><dc:creator>season</dc:creator><author>season</author><pubDate>Sat, 15 Jun 2013 15:04:00 GMT</pubDate><guid>http://www.blogjava.net/echoseason/archive/2013/06/15/400583.html</guid><wfw:comment>http://www.blogjava.net/echoseason/comments/400583.html</wfw:comment><comments>http://www.blogjava.net/echoseason/archive/2013/06/15/400583.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/echoseason/comments/commentRss/400583.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/echoseason/services/trackbacks/400583.html</trackback:ping><description><![CDATA[<div class="Section0" style="layout-grid:  15.6pt none">
<p class="p0" style="margin-bottom: 0pt; text-align: left; margin-top: 0pt"><span style="font-size: 12pt; font-family: '宋体'; visibility: hidden; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-bottom: 0pt; text-align: left; margin-top: 0pt; mso-line-height-alt: 12pt"><a name="a:1."></a><span style="font-size: 12pt; font-family: '微软雅黑'; font-weight: bold; color: rgb(56,56,56); mso-spacerun: 'yes'">1.&nbsp;问题描述</span><span style="font-size: 12pt; font-family: '微软雅黑'; font-weight: bold; color: rgb(56,56,56); mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-bottom: 0pt; margin-top: 0pt; line-height: 16.5pt; text-indent: 16.5pt"><span style="font-size: 10.5pt; font-family: '微软雅黑'; color: rgb(56,56,56); mso-spacerun: 'yes'">如何实现点击图表1，图表2显示图表1的关联数据，接着点击图表2，图表3显示图表2的关联数据又该如何实现呢，如下图，下面详细介绍该功能的实现步骤。</span><span style="font-size: 10.5pt; font-family: '微软雅黑'; color: rgb(56,56,56); mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-bottom: 0pt; margin-top: 0pt; line-height: 16.5pt; text-indent: 16.5pt"><span style="font-size: 10.5pt; font-family: '微软雅黑'; color: rgb(56,56,56); mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-bottom: 0pt; text-align: left; margin-top: 0pt; mso-line-height-alt: 12pt"><img border="0" alt="" src="http://www.blogjava.net/images/blogjava_net/echoseason/联动1.gif" /><br /><a name="a:2."></a><span style="font-size: 12pt; font-family: '微软雅黑'; font-weight: bold; color: rgb(56,56,56); mso-spacerun: 'yes'">2.&nbsp;示例</span><span style="font-size: 12pt; font-family: '微软雅黑'; font-weight: bold; color: rgb(56,56,56); mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-bottom: 0pt; text-align: left; margin-top: 0pt; line-height: 16.5pt"><a name="a:2.1"></a><span style="font-size: 11.5pt; font-family: '微软雅黑'; font-weight: bold; color: rgb(56,56,56); mso-spacerun: 'yes'">2.1&nbsp;数据准备</span><span style="font-size: 11.5pt; font-family: '微软雅黑'; font-weight: bold; color: rgb(56,56,56); mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-bottom: 0pt; margin-top: 0pt; line-height: 16.5pt; text-indent: 16.5pt"><span style="font-size: 10.5pt; font-family: '微软雅黑'; color: rgb(56,56,56); mso-spacerun: 'yes'">新建3个数据集作为3张图表的数据源。</span><span style="font-size: 10.5pt; font-family: '微软雅黑'; color: rgb(56,56,56); mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-bottom: 0pt; margin-top: 0pt; line-height: 16.5pt; text-indent: 16.5pt"><span style="font-size: 10.5pt; font-family: '微软雅黑'; color: rgb(56,56,56); mso-spacerun: 'yes'">ds1：</span><span style="font-size: 10.5pt; font-family: '微软雅黑'; font-weight: bold; color: rgb(95,158,160); mso-spacerun: 'yes'">SELECT&nbsp;*&nbsp;FROM&nbsp;[销量]&nbsp;where&nbsp;1=1&nbsp;${if(len(地区)==0,"","and&nbsp;地区='"+地区+"'")}</span><span style="font-size: 10.5pt; font-family: '微软雅黑'; color: rgb(56,56,56); mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-bottom: 0pt; margin-top: 0pt; line-height: 16.5pt; text-indent: 16.5pt"><span style="font-size: 10.5pt; font-family: '微软雅黑'; color: rgb(56,56,56); mso-spacerun: 'yes'">ds2：</span><span style="font-size: 10.5pt; font-family: '微软雅黑'; font-weight: bold; color: rgb(95,158,160); mso-spacerun: 'yes'">SELECT&nbsp;*&nbsp;FROM&nbsp;[销量]&nbsp;where&nbsp;1=1&nbsp;${if(len(地区)==0,"","and&nbsp;地区='"+地区+"'")}&nbsp;${if(len(销售员)==0,"","and&nbsp;销售员='"+销售员+"'")}</span><span style="font-size: 10.5pt; font-family: '微软雅黑'; color: rgb(56,56,56); mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-bottom: 0pt; margin-top: 0pt; line-height: 16.5pt; text-indent: 16.5pt"><span style="font-size: 10.5pt; font-family: '微软雅黑'; color: rgb(56,56,56); mso-spacerun: 'yes'">ds3：</span><span style="font-size: 10.5pt; font-family: '微软雅黑'; font-weight: bold; color: rgb(95,158,160); mso-spacerun: 'yes'">SELECT&nbsp;*&nbsp;FROM&nbsp;[销量]&nbsp;where&nbsp;1=1&nbsp;${if(len(地区)==0,"","and&nbsp;地区='"+地区+"'")}&nbsp;${if(len(销售员)==0,"","and&nbsp;销售员='"+销售员+"'")}&nbsp;${if(len(产品类型)==0,"","and&nbsp;产品类型='"+产品类型+"'")}</span><span style="font-size: 10.5pt; font-family: '微软雅黑'; color: rgb(56,56,56); mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-bottom: 0pt; text-align: left; margin-top: 0pt; line-height: 16.5pt"><a name="a:2.2"></a><span style="font-size: 11.5pt; font-family: '微软雅黑'; font-weight: bold; color: rgb(56,56,56); mso-spacerun: 'yes'">2.2&nbsp;图表设置</span><span style="font-size: 11.5pt; font-family: '微软雅黑'; font-weight: bold; color: rgb(56,56,56); mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-bottom: 5pt; text-align: left; margin-left: 36pt; margin-top: 5pt; line-height: 12pt; text-indent: -18pt"><span style="font-size: 10pt; font-family: 'Symbol'; font-weight: bold; color: rgb(0,0,139); mso-spacerun: 'yes'">&#183;&nbsp;</span><span style="font-size: 10.5pt; font-family: 'Arial'; font-weight: bold; color: rgb(0,0,139); mso-spacerun: 'yes'">数据源设置</span><span style="font-size: 10.5pt; font-family: '宋体'; font-weight: bold; color: rgb(0,0,139); mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-bottom: 0pt; margin-top: 0pt; line-height: 16.5pt; text-indent: 16.5pt"><span style="font-size: 10.5pt; font-family: '微软雅黑'; color: rgb(56,56,56); mso-spacerun: 'yes'">新建3张图表，柱形图、饼图、折线图，其数据源分别为ds1，ds2和ds3，具体数据源设置如下图：</span><span style="font-size: 10.5pt; font-family: '微软雅黑'; color: rgb(56,56,56); mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-bottom: 0pt; margin-top: 0pt; line-height: 16.5pt; text-indent: 16.5pt"><span style="font-size: 10.5pt; font-family: '微软雅黑'; color: rgb(56,56,56); mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-bottom: 5pt; text-align: left; margin-left: 36pt; margin-top: 5pt; line-height: 12pt; text-indent: -18pt"><span style="font-size: 10pt; font-family: 'Symbol'; font-weight: bold; color: rgb(0,0,139); mso-spacerun: 'yes'"><img border="0" alt="" src="http://www.blogjava.net/images/blogjava_net/echoseason/联动2.png" /><br />&#183;&nbsp;</span><span style="font-size: 10.5pt; font-family: 'Arial'; font-weight: bold; color: rgb(0,0,139); mso-spacerun: 'yes'">交互属性设置</span><span style="font-size: 10.5pt; font-family: '宋体'; font-weight: bold; color: rgb(0,0,139); mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-bottom: 0pt; margin-top: 0pt; line-height: 16.5pt; text-indent: 16.5pt"><span style="font-size: 10.5pt; font-family: '微软雅黑'; color: rgb(56,56,56); mso-spacerun: 'yes'">点击柱形图时，需要将柱形图的分类轴传递给饼图，作为饼图数据源和折线图数据源的一个参数值，点击饼图时，需要将饼图的系列名传递给折线图作为折线图数据源的参数值，如果类似</span><span><a href="http://www.finereporthelp.com/help/1/5/6/0/0/0.html"><span style="font-size: 10.5pt; font-family: '微软雅黑'; color: rgb(0,0,255); text-decoration: underline; mso-spacerun: 'yes'">图表联动</span></a></span><span style="font-size: 10.5pt; font-family: '微软雅黑'; color: rgb(56,56,56); mso-spacerun: 'yes'">中的是两个图表之间的相互关联，则直接使用</span><span style="font-size: 10.5pt; font-family: '微软雅黑'; font-weight: bold; color: rgb(0,128,128); mso-spacerun: 'yes'">超级链接-联动单元格</span><span style="font-size: 10.5pt; font-family: '微软雅黑'; color: rgb(56,56,56); mso-spacerun: 'yes'">，但是此处折线图需要接收来自柱形图的分类轴值，而折线图却不是和柱形图联动，所以无法直接使用</span><span style="font-size: 10.5pt; font-family: '微软雅黑'; font-weight: bold; color: rgb(0,128,128); mso-spacerun: 'yes'">超级链接-联动单元格</span><span style="font-size: 10.5pt; font-family: '微软雅黑'; color: rgb(56,56,56); mso-spacerun: 'yes'">，我们可以使用超级链接中的</span><span style="font-size: 10.5pt; font-family: '微软雅黑'; font-weight: bold; color: rgb(0,128,128); mso-spacerun: 'yes'">动态参数</span><span style="font-size: 10.5pt; font-family: '微软雅黑'; color: rgb(56,56,56); mso-spacerun: 'yes'">，点击柱形图或饼图的时候，动态的给参数赋值，并且参数值一直存在，设置如下图：</span><span style="font-size: 10.5pt; font-family: '微软雅黑'; color: rgb(56,56,56); mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-bottom: 0pt; margin-top: 0pt; line-height: 16.5pt; text-indent: 16.5pt"><span style="font-size: 10.5pt; font-family: '微软雅黑'; font-weight: bold; color: rgb(139,0,139); mso-spacerun: 'yes'">柱形图<br /><img border="0" alt="" src="http://www.blogjava.net/images/blogjava_net/echoseason/联动3.png" /><br /></span><span style="font-size: 10.5pt; font-family: '微软雅黑'; color: rgb(56,56,56); mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-bottom: 0pt; margin-top: 0pt; line-height: 16.5pt; text-indent: 16.5pt"><span style="font-size: 10.5pt; font-family: '微软雅黑'; color: rgb(56,56,56); mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-bottom: 0pt; margin-top: 0pt; line-height: 16.5pt; text-indent: 16.5pt"><span style="font-size: 10.5pt; font-family: '微软雅黑'; font-weight: bold; color: rgb(139,0,139); mso-spacerun: 'yes'">饼图<br /></span><span style="font-size: 10.5pt; font-family: '微软雅黑'; color: rgb(56,56,56); mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-bottom: 0pt; margin-top: 0pt; line-height: 16.5pt; text-indent: 16.5pt"><span style="font-size: 10.5pt; font-family: '微软雅黑'; color: rgb(56,56,56); mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-bottom: 5pt; text-align: left; margin-left: 36pt; margin-top: 5pt; line-height: 12pt; text-indent: -18pt"><span style="font-size: 10pt; font-family: 'Symbol'; font-weight: bold; color: rgb(0,0,139); mso-spacerun: 'yes'"><img border="0" alt="" src="http://www.blogjava.net/images/blogjava_net/echoseason/联动4.png" /><br />&#183;&nbsp;</span><span style="font-size: 10.5pt; font-family: 'Arial'; font-weight: bold; color: rgb(0,0,139); mso-spacerun: 'yes'">参数界面设置</span><span style="font-size: 10.5pt; font-family: '宋体'; font-weight: bold; color: rgb(0,0,139); mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-bottom: 0pt; margin-top: 0pt; line-height: 16.5pt; text-indent: 16.5pt"><span style="font-size: 10.5pt; font-family: '微软雅黑'; color: rgb(56,56,56); mso-spacerun: 'yes'">如最上面的效果图，切换到参数设计界面，点击右侧下方面板的</span><span style="font-size: 10.5pt; font-family: '微软雅黑'; font-weight: bold; color: rgb(0,128,128); mso-spacerun: 'yes'">全部添加</span><span style="font-size: 10.5pt; font-family: '微软雅黑'; color: rgb(56,56,56); mso-spacerun: 'yes'">，将参数全部添加到参数面板中，如下图：</span><span style="font-size: 10.5pt; font-family: '微软雅黑'; color: rgb(56,56,56); mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-bottom: 0pt; margin-top: 0pt; line-height: 16.5pt; text-indent: 16.5pt"><span style="font-size: 10.5pt; font-family: '微软雅黑'; color: rgb(56,56,56); mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-bottom: 0pt; margin-top: 0pt; line-height: 16.5pt; text-indent: 16.5pt"><span style="font-size: 10.5pt; font-family: '微软雅黑'; color: rgb(56,56,56); mso-spacerun: 'yes'"><img border="0" alt="" src="http://www.blogjava.net/images/blogjava_net/echoseason/联动5.png" /><br />地区参数的控件类型选择下拉框，数据字典设置如下图<img border="0" alt="" src="http://www.blogjava.net/images/blogjava_net/echoseason/联动6.png" />：<br /></span><span style="font-size: 10.5pt; font-family: '微软雅黑'; color: rgb(56,56,56); mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-bottom: 0pt; margin-top: 0pt; line-height: 16.5pt; text-indent: 16.5pt"><span style="font-size: 10.5pt; font-family: '微软雅黑'; color: rgb(56,56,56); mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-bottom: 0pt; margin-top: 0pt; line-height: 16.5pt; text-indent: 16.5pt"><span style="font-size: 10.5pt; font-family: '微软雅黑'; color: rgb(56,56,56); mso-spacerun: 'yes'">将销售员和产品类型的控件以及标签设置为</span><span style="font-size: 10.5pt; font-family: '微软雅黑'; font-weight: bold; color: rgb(0,128,128); mso-spacerun: 'yes'">不可见</span><span style="font-size: 10.5pt; font-family: '微软雅黑'; color: rgb(56,56,56); mso-spacerun: 'yes'">，将销售员和产品类型两个参数的控件添加上去主要是为了在预览一次报表之后，重新选择地区时，可以重置销售员和产品类型两个参数。</span><span style="font-size: 10.5pt; font-family: '微软雅黑'; color: rgb(56,56,56); mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-bottom: 0pt; text-align: left; margin-top: 0pt; line-height: 16.5pt"><a name="a:2.3"></a><span style="font-size: 11.5pt; font-family: '微软雅黑'; font-weight: bold; color: rgb(56,56,56); mso-spacerun: 'yes'">2.3&nbsp;效果查看</span><span style="font-size: 11.5pt; font-family: '微软雅黑'; font-weight: bold; color: rgb(56,56,56); mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-bottom: 0pt; margin-top: 0pt; line-height: 16.5pt; text-indent: 16.5pt"><span style="font-size: 10.5pt; font-family: '微软雅黑'; color: rgb(56,56,56); mso-spacerun: 'yes'">点击分页预览，效果如上图。</span><span style="font-size: 10.5pt; font-family: '微软雅黑'; color: rgb(56,56,56); mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-bottom: 0pt; margin-top: 0pt"><span style="font-size: 10.5pt; font-family: 'Calibri'; mso-spacerun: 'yes'"><o:p></o:p></span></p></div><!--EndFragment--><img src ="http://www.blogjava.net/echoseason/aggbug/400583.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/echoseason/" target="_blank">season</a> 2013-06-15 23:04 <a href="http://www.blogjava.net/echoseason/archive/2013/06/15/400583.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>报表工具finereport的pad端使用教程</title><link>http://www.blogjava.net/echoseason/archive/2013/05/08/398990.html</link><dc:creator>season</dc:creator><author>season</author><pubDate>Wed, 08 May 2013 06:47:00 GMT</pubDate><guid>http://www.blogjava.net/echoseason/archive/2013/05/08/398990.html</guid><wfw:comment>http://www.blogjava.net/echoseason/comments/398990.html</wfw:comment><comments>http://www.blogjava.net/echoseason/archive/2013/05/08/398990.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/echoseason/comments/commentRss/398990.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/echoseason/services/trackbacks/398990.html</trackback:ping><description><![CDATA[<p><br /></p>  <p style="text-indent:16.5pt;line-height:16.5pt;"><span style="font-family:&quot;微软雅黑&quot;,&quot;sans-serif&quot;;color:#383838;">同手机端一样，需要在pad端安装客户端，下载地址为：Android，在google play 里面搜索finereport或数据分析，然后下载安装。iphone、ipad，在app store里面搜索：finereport或数据分析，然后下载安装。</span></p>  <p align="left"><a name="a:2."><strong><span style="font-size:12.0pt;font-family:&quot;微软雅黑&quot;,&quot;sans-serif&quot;;color:#383838;">1.&nbsp;</span></strong></a><strong><span style="font-size:12.0pt;font-family: &quot;微软雅黑&quot;,&quot;sans-serif&quot;;color:#383838;">操作步骤</span></strong></p>    <p align="left" style="line-height: 16.5pt;"><a name="a:2.1"><strong><span style="font-size:11.5pt;font-family:&quot;微软雅黑&quot;,&quot;sans-serif&quot;;color:#383838;">1.1&nbsp;</span></strong></a><strong><span style="font-size:11.5pt;font-family: &quot;微软雅黑&quot;,&quot;sans-serif&quot;;color:#383838;">连接服务器</span></strong></p>    <p style="text-indent:16.5pt;line-height:16.5pt;"><span style="font-family:&quot;微软雅黑&quot;,&quot;sans-serif&quot;;color:#383838;">需要在客户端查看报表，首先需要配置服务器，如果pad端没有连接服务器，则打开软件就会进入服务器连接配置页面，点击</span><strong><span style="font-family:&quot;微软雅黑&quot;,&quot;sans-serif&quot;;color:teal;">点击添加连接至服务器</span></strong><span style="font-family:&quot;微软雅黑&quot;,&quot;sans-serif&quot;;color:#383838;">，如下图</span></p>  <p style="text-indent:16.5pt;line-height:16.5pt;"><img src="http://www.blogjava.net/images/blogjava_net/echoseason/pad1.png" width="675" height="505" alt="" /><br /></p>  <p style="text-indent:16.5pt;line-height:16.5pt;"><span style="font-family:&quot;微软雅黑&quot;,&quot;sans-serif&quot;;color:#383838;">点击完成之后，则会进入到用户名密码输入界面，如下图：</span></p>  <p style="text-indent:16.5pt;line-height:16.5pt;"><img src="http://www.blogjava.net/images/blogjava_net/echoseason/pad2.png" width="678" height="510" alt="" /><br /></p>  <p align="left" style="line-height: 16.5pt;"><a name="a:2.2"><strong><span style="font-size:11.5pt;font-family:&quot;微软雅黑&quot;,&quot;sans-serif&quot;;color:#383838;">1.2&nbsp;</span></strong></a><strong><span style="font-size:11.5pt;font-family: &quot;微软雅黑&quot;,&quot;sans-serif&quot;;color:#383838;">客户端主界面</span></strong></p>    <p style="text-indent:16.5pt;line-height:16.5pt;"><span style="font-family:&quot;微软雅黑&quot;,&quot;sans-serif&quot;;color:#383838;">输入用户名密码之后即可进入到移动端的决策系统，可在该界面上查看报表，填报报表等等一系列操作，界面如下：</span></p>  <p style="text-indent:16.5pt;line-height:16.5pt;"><img src="http://www.blogjava.net/images/blogjava_net/echoseason/pad3.png" width="676" height="508" alt="" /><br /></p>  <p align="left" style="line-height: 16.5pt;"><a name="a:2.3"><strong><span style="font-size:11.5pt;font-family:&quot;微软雅黑&quot;,&quot;sans-serif&quot;;color:#383838;">1.3&nbsp;</span></strong></a><strong><span style="font-size:11.5pt;font-family: &quot;微软雅黑&quot;,&quot;sans-serif&quot;;color:#383838;">报表查看</span></strong></p>    <p style="text-indent:16.5pt;line-height:16.5pt;"><span style="font-family:&quot;微软雅黑&quot;,&quot;sans-serif&quot;;color:#383838;">打开报表目录树，点击报表即可，如我们展示</span><strong><span style="font-family:&quot;微软雅黑&quot;,&quot;sans-serif&quot;;color:teal;">报表展示</span></strong><span style="font-family:&quot;微软雅黑&quot;,&quot;sans-serif&quot;;color:#383838;">目录下的</span><strong><span style=" font-family:&quot;微软雅黑&quot;,&quot;sans-serif&quot;;color:teal;">数据钻取</span></strong><span style="font-family:&quot;微软雅黑&quot;,&quot;sans-serif&quot;;color:#383838;">报表，如下图：</span></p>  <p style="text-indent:16.5pt;line-height:16.5pt;"><img src="http://www.blogjava.net/images/blogjava_net/echoseason/pad4.png" width="677" height="505" alt="" /><br /></p>  <p style="text-indent:16.5pt;line-height:16.5pt;"><span style="font-family:&quot;微软雅黑&quot;,&quot;sans-serif&quot;;color:#383838;">其它特殊操作同手机端的报表查看，这里不再赘述。</span></p>  <p>&nbsp;</p><img src ="http://www.blogjava.net/echoseason/aggbug/398990.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/echoseason/" target="_blank">season</a> 2013-05-08 14:47 <a href="http://www.blogjava.net/echoseason/archive/2013/05/08/398990.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>FineReport报表和J2EE应用的集成</title><link>http://www.blogjava.net/echoseason/archive/2013/05/08/398989.html</link><dc:creator>season</dc:creator><author>season</author><pubDate>Wed, 08 May 2013 06:45:00 GMT</pubDate><guid>http://www.blogjava.net/echoseason/archive/2013/05/08/398989.html</guid><wfw:comment>http://www.blogjava.net/echoseason/comments/398989.html</wfw:comment><comments>http://www.blogjava.net/echoseason/archive/2013/05/08/398989.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/echoseason/comments/commentRss/398989.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/echoseason/services/trackbacks/398989.html</trackback:ping><description><![CDATA[<br />  <p style="text-indent:21.0pt;line-height:150%">FineReport<span style="font-family:宋体;Times New Roman&quot;;Times New Roman&quot;">是一个纯</span>Java<span style="font-family:宋体;Times New Roman&quot;;Times New Roman&quot;">软件，因此对于</span>J2EE<span style="font-family:宋体;Times New Roman&quot;;Times New Roman&quot;">的项目，可以做到无缝集成。</span></p>  <p style="text-indent:21.0pt; line-height:150%"><span style="font-family:宋体;Times New Roman&quot;;Times New Roman&quot;">报表服务器并非物理概念的服务器，而是以一个标准的</span>J2EE<span style="font-family:宋体;Times New Roman&quot;;Times New Roman&quot;">应用的形式或者</span>jar<span style="font-family:宋体;Times New Roman&quot;;Times New Roman&quot;">包的形式提交给程序。应用程序通过</span>url<span style="font-family:宋体;Times New Roman&quot;;Times New Roman&quot;">来调用报表，或者通过开放的</span>API<span style="font-family:宋体;Times New Roman&quot;;Times New Roman&quot;">来调用报表的各种功能，来实现更加灵活的控制。报表集成到应用程序后，即可作为一个统一完整的程序来进行发布。</span></p>  <p style="text-indent:21.0pt; line-height:150%"><span style="font-family:宋体;Times New Roman&quot;;Times New Roman&quot;">同时无缝集成还能够使报表与应用程序使用同一个数据库连接池，或进行集群，负载均衡等，提高报表的运行效率，原理图如图</span>1<span style="font-family:宋体;Times New Roman&quot;;Times New Roman&quot;">所示：</span></p>  <p style="margin-left:20.25pt;text-indent:1.5pt;line-height: 150%"><img src="http://www.blogjava.net/images/blogjava_net/echoseason/集成1.png" width="928" height="591" alt="" /><br /></p>  <p align="center" style="text-align:center;text-indent:21.75pt; line-height:150%"><span style="font-size:9.0pt;line-height:150%;font-family: 宋体;Times New Roman&quot;;Times New Roman&quot;; color:gray">图</span><span style="font-size:9.0pt;line-height:150%; color:gray">1 Java</span><span style="font-size:9.0pt;line-height:150%; font-family:宋体;Times New Roman&quot;;Times New Roman&quot;;color:gray">项目集成原理图</span></p>  <p>&nbsp;</p>  <p><strong><span style="font-size:12.0pt;font-family:宋体;Times New Roman&quot;;Times New Roman&quot;">报表工程目录结构</span></strong><strong></strong></p>  <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-size:12.0pt; font-family:宋体;">在说明配置FineReport服务器之前，我们先了解一下FineReport应用服务的目录结构：</span></p>  <p align="left" style="margin-left: 21pt; text-indent: 21pt;"><img src="http://www.blogjava.net/images/blogjava_net/echoseason/集成2.png" width="457" height="133" alt="" /><br /></p>  <p align="left" style="text-indent: 21pt;"><span style="font-size:12.0pt;font-family:宋体;">对上图的目录层次结构我们做一些说明：</span></p>  <p align="left" style="text-indent: 21pt;"><span style="font-size:12.0pt; font-family:宋体;color:blue;">WebReport</span><span style="font-size:12.0pt;font-family:宋体;">：可以看到所有的相关文件都包含在WebReport这个服务器应用工程中，也就是说WebReport是我们默认的工程名，此项名字可以修改。</span></p>  <p align="left" style="text-indent: 21pt;"><span style="font-size:12.0pt; font-family:宋体;color:blue;">WEB-INF</span><span style="font-size:12.0pt;font-family:宋体;">：WEB-INF目录是J2EE服务器中默认规定的，全称是Web Information。</span></p>  <p align="left" style="text-indent: 21pt;"><span style="font-size:12.0pt; font-family:宋体;color:blue;">classes</span><span style="font-size:12.0pt;font-family:宋体;">：classes 文件夹也是应用服务器默认规定的。主要作用是存放.class文件，例如在FineReport中，如果要使用"自定义函数"，"程序数据源"和"程序网 络报表"等功能，必需先使用我们提供的接口来编写.java文件，然后将编译后产生的.class文件存放到该目录下。</span></p>  <p align="left" style="text-indent: 21pt;"><span style="font-size:12.0pt; font-family:宋体;color:blue;">lib</span><span style="font-size:12.0pt;font-family:宋体;">：lib 也是应用服务器规定的目录结构。FineReport该目录下主要包括fr-server-6.5.jar，第三方类的jar文件和一些常用数据库 JDBC驱动，比如ojdbc14.jar就是Oracle数据库的驱动，应用服务器在启动的时候会自动将lib目录下所有的.jar文件加载到系统的 classpath中；fr-server-6.5.jar包含了FineReport服务器的所有功能，它是由FineReport源文件编译后产生 的.class类文件。例如：Servlet类com.fr.web.ReportServlet便位于fr-server-6.5.jar中。</span></p>  <p align="left" style="text-indent: 21pt;"><span style="font-size:12.0pt; font-family:宋体;color:blue;">reportlets</span><span style="font-size:12.0pt;font-family:宋体;">：reportlets是FineReport服务器默认规定的，不能修改。可以在这个目录下面建立子目录文件夹，FineReport设计器设计的模板一般都保存在这个目录或者它的子目录下面，以便FineReport服务器调用。</span></p>  <p align="left" style="text-indent: 21pt;"><span style="font-size:12.0pt; font-family:宋体;color:blue;">resources</span><span style="font-size:12.0pt;font-family:宋体;">：resources 是FineReport服务器默认规定的，不能修改。下面保存了一些.xml文件，这些.xml文件里面保存着FineReport服务器的配置等信 息，FineReport服务器启动的时候，会自动加载这些.xml文件（有些xml文件不是运行必需的）。</span></p>  <p align="left" style="text-indent: 21pt;"><span style="font-size:12.0pt; font-family:宋体;color:blue;">web.xml</span><span style="font-size:12.0pt;font-family:宋体;">：这个文件也是J2EE服务器所规定必须建立的，我们在此文件中定义了FineReport的SERVLET的解析路径方式，权限加载等一些内容，此文件初始配置内容如下：</span></p>  <p align="left" style="margin-left: 45pt; text-indent: -18pt;"><span style="font-size:12.0pt;font-family:宋体;">1.&nbsp;</span><span style="font-size:12.0pt; font-family:宋体;">&lt;?xml&nbsp;version="1.0"&nbsp;encoding="UTF-8"?&gt;&nbsp;&nbsp;&nbsp;&nbsp;</span></p>  <p align="left" style="margin-left: 45pt; text-indent: -18pt;"><span style="font-size:12.0pt;font-family:宋体;">2.&nbsp;</span><span style="font-size:12.0pt; font-family:宋体;">&lt;web-app&nbsp;xmlns="http://java.sun.com/xml/ns/j2ee"&nbsp;xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&nbsp;&nbsp;&nbsp;&nbsp;xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee&nbsp;http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"&nbsp;&nbsp;&nbsp;&nbsp;version="2.4"&gt;&nbsp;&nbsp;&nbsp;</span></p>  <p align="left" style="margin-left: 45pt; text-indent: -18pt;"><span style="font-size:12.0pt;font-family:宋体;">3.&nbsp;</span><span style="font-size:12.0pt; font-family:宋体;">&lt;servlet&gt;&nbsp;&nbsp;</span></p>  <p align="left" style="margin-left: 45pt; text-indent: -18pt;"><span style="font-size:12.0pt;font-family:宋体;">4.&nbsp;</span><span style="font-size:12.0pt; font-family:宋体;">&lt;servlet-name&gt;ReportServer&lt;/servlet-name&gt;&nbsp;&nbsp;</span></p>  <p align="left" style="margin-left: 45pt; text-indent: -18pt;"><span style="font-size:12.0pt;font-family:宋体;">5.&nbsp;</span><span style="font-size:12.0pt; font-family:宋体;">&lt;servlet-class&gt;com.fr.web.ReportServlet&lt;/servlet-class&gt;&nbsp;&nbsp;</span></p>  <p align="left" style="margin-left: 45pt; text-indent: -18pt;"><span style="font-size:12.0pt;font-family:宋体;">6.&nbsp;</span><span style="font-size:12.0pt; font-family:宋体;">&lt;load-on-startup&gt;0&lt;/load-on-startup&gt;&nbsp;&nbsp;</span></p>  <p align="left" style="margin-left: 45pt; text-indent: -18pt;"><span style="font-size:12.0pt;font-family:宋体;">7.&nbsp;</span><span style="font-size:12.0pt; font-family:宋体;">&lt;/servlet&gt;&nbsp;&nbsp;&nbsp;</span></p>  <p align="left" style="margin-left: 45pt; text-indent: -18pt;"><span style="font-size:12.0pt;font-family:宋体;">8.&nbsp;</span><span style="font-size:12.0pt; font-family:宋体;">&lt;servlet-mapping&gt;&nbsp;&nbsp;</span></p>  <p align="left" style="margin-left: 45pt; text-indent: -18pt;"><span style="font-size:12.0pt;font-family:宋体;">9.&nbsp;</span><span style="font-size:12.0pt; font-family:宋体;">&lt;servlet-name&gt;ReportServer&lt;/servlet-name&gt;&nbsp;&nbsp;&nbsp;</span></p>  <p align="left" style="margin-left: 45pt; text-indent: -18pt;"><span style="font-size:12.0pt;font-family:宋体;">10.</span><span style="font-size:12.0pt;font-family:宋体;">&lt;url-pattern&gt;/ReportServer&lt;/url-pattern&gt;&nbsp;&nbsp;</span></p>  <p align="left" style="margin-left: 45pt; text-indent: -18pt;"><span style="font-size:12.0pt;font-family:宋体;">11.</span><span style="font-size:12.0pt;font-family:宋体;">&lt;/servlet-mapping&gt;&nbsp;&nbsp;</span></p>  <p align="left" style="margin-left: 45pt; text-indent: -18pt;"><span style="font-size:12.0pt;font-family:宋体;">12.</span><span style="font-size:12.0pt;font-family:宋体;">&lt;/web-app&gt;&nbsp;&nbsp;</span></p>  <p><strong><span style="font-size:12.0pt;font-family:宋体;Times New Roman&quot;;Times New Roman&quot;">报表集成步骤</span></strong><strong></strong></p>  <p style="margin-left:39.0pt;text-indent:-18.0pt;">1、&nbsp;<span style="font-family:宋体;Times New Roman&quot;;Times New Roman&quot;">服务器部署</span></p>  <p align="left" style="margin-left: 21pt; text-indent: 21pt;"><span style="font-size:12.0pt;font-family:宋体;">FineReport</span><span style="font-size:12.0pt;font-family:宋体;">报表是一个Servlet应用。大 家知道，Servlet是一种服务器端的Java应用程序，具有独立于平台和协议的特性，可以生成动态的Web页面。 它担当客户请求（Web浏览器或其他HTTP客户程序）与服务器响应（HTTP服务器上的数据库或应用程序）的中间层。 Servlet是位于Web 服务器内部的服务器端的Java应用程序，由Web服务器进行加载，该Web服务器必须包含支持Servlet的Java虚拟机。</span></p>  <p align="left" style="margin-left: 21pt; text-indent: 21pt;"><span style="font-size:12.0pt; font-family:宋体;">因此FineReport报表必须部署在Web应用服务器如Tomcat、Weblogic、Websphere等下面，启动Web应用服务器时就会加载FineReport报表这个Servlet，从而交互式地浏览和修改数据，整个过程如下：</span></p>  <p align="left" style="margin-left: 21pt; text-indent: 21pt;"><img src="http://www.blogjava.net/images/blogjava_net/echoseason/集成3.png" width="474" height="352" alt="" /><br /></p>  <p align="left" style="margin-left: 21pt; text-indent: 21pt;">&nbsp;</p>  <p align="left" style="margin-left: 21pt; text-indent: 21pt;"><span style="font-size:12.0pt; font-family:宋体;">报表部署分为两种，一是报表作为一个独立的应用独立部署；或者是集成到现有应用即嵌入式部署。不管哪种部署方式，他们的目录结构都是类似的。</span></p>  <p align="left" style="margin-left: 21pt; text-indent: 21pt;"><span style="font-size:12.0pt; font-family:宋体;">如下图我们对未包含报表的应用及包含报表的应用目录作一个比较：</span></p>  <p align="left" style="margin-left: 42pt; text-indent: 21pt;"><img src="http://www.blogjava.net/images/blogjava_net/echoseason/集成4.png" width="743" height="396" alt="" /><br /></p>  <p align="left"><span style="font-size:12.0pt;font-family:宋体;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1.1</span><span style="font-size:12.0pt;font-family:宋体;">独立部署</span></p>  <p style="margin-left:42.0pt;text-indent:21.0pt"><span style="font-size:12.0pt;font-family:宋体;">FineReport</span><span style="font-size:12.0pt; font-family:宋体;">安装目录下的WebReport目录就是一个标准的应用，因此，若用户希望将报表作为一个独立的应用进行部署的话，可以直接使用WebReport目录进行发布。</span></p>  <p>&nbsp;</p>  <p align="left"><span style="font-size:12.0pt;font-family:宋体;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1.2</span><span style="font-size:12.0pt;font-family:宋体;">嵌入式部署</span></p>  <p align="left" style="margin-left: 39pt; text-indent: 21pt;"><span style="font-family:宋体;Times New Roman&quot;;Times New Roman&quot;">若用户希望将报表集成到自己的应用中的话，则可以对应上图</span>&#8220;<span style="font-family:宋体;Times New Roman&quot;;Times New Roman&quot;">部署报表后的应用</span>&#8221;<span style="font-family:宋体;Times New Roman&quot;;Times New Roman&quot;">目录结构，将对应的报表文件拷贝到相应目录即可。</span></p>  <p style="margin-left:21.0pt">&nbsp;</p>  <p style="margin-left:39.0pt;text-indent:-18.0pt;">2、&nbsp;<span style="font-family:宋体;Times New Roman&quot;;Times New Roman&quot;">页面集成</span></p>  <p align="left" style="margin-left: 21pt; text-indent: 21pt;"><span style="font-size:12.0pt; font-family:宋体;">用户系统的网页可能由不同的语言开发，如HTML、ASP、JSP、PHP等。FineRepor报表可以通过Frame框架集成到Web<a name="a:2.">页面中，</a>指定Frame的src即可。</span></p>  <p align="left" style="margin-left: 39pt;"><span style="font-size:12.0pt;font-family:宋体;">例：&lt;iframe&nbsp;id="reportFrame"&nbsp;width="900"&nbsp;height="400"&nbsp;src="/WebReport/ReportServer?reportlet=/doc/Primary/Parameter/Parameter.cpt"&gt;&lt;/iframe&gt;&nbsp;&nbsp;</span></p>  <p style="margin-left:21.0pt;text-indent:21.0pt"><span style="font-family:宋体;Times New Roman&quot;;Times New Roman&quot;">另外页面集成中的一些常见应用：动态传参、自定义参数界面、自定义工具栏、页面布局等；可以参考</span>FR<span style="font-family:宋体;Times New Roman&quot;;Times New Roman&quot;">在线帮助手册。</span></p>  <p style="margin-left:39.0pt;text-indent:-18.0pt;">3、&nbsp;<span style="font-family:宋体;Times New Roman&quot;;Times New Roman&quot;">权限集成</span></p>  <p style="margin-left:39.0pt">3.1<span style="font-family:宋体;Times New Roman&quot;;Times New Roman&quot;">、</span>FR<span style="font-family:宋体;Times New Roman&quot;;Times New Roman&quot;">权限流程图</span></p>  <p style="margin-left:39.0pt"><img src="http://www.blogjava.net/images/blogjava_net/echoseason/集成5.png" width="644" height="567" alt="" /><br /></p>  <p style="margin-left:39.0pt">&nbsp;</p>  <p style="margin-left:39.0pt">3.2<span style="font-family:宋体;Times New Roman&quot;;Times New Roman&quot;">、丰富的权限认证方式</span></p>  <p style="margin-left:39.0pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FineReport<span style="font-family:宋体;Times New Roman&quot;;Times New Roman&quot;">为了保证权限功能的通用性，提供了多种认证方式，其总体架构图如图</span></p>  <p style="text-indent:53.25pt; line-height:150%">&nbsp;&nbsp;&nbsp;<img src="http://www.blogjava.net/images/blogjava_net/echoseason/集成6.png" width="883" height="488" alt="" /></p>  <p style="text-indent:174.7pt; line-height:150%"><span style="font-size:9.0pt;line-height:150%;font-family: 宋体;color:gray">图2 FineReport权限总体架构图</span></p>  <p style="margin-left:39.0pt">&nbsp;</p>  <p style="margin-left:39.0pt">3.3<span style="font-family:宋体;Times New Roman&quot;;Times New Roman&quot;">、权限粒度</span></p>  <p style="margin-left:39.0pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-family:宋体;Times New Roman&quot;;Times New Roman&quot;">很多系统的权限认证只是限制模块的使用，使得合法用户能够行使自己的权利。</span>FineReport<span style="font-family:宋体;Times New Roman&quot;;Times New Roman&quot;">在满足这种整体权限认证的同时，权限的控制力度可以达到同一张报表的内容在不同权限下展示的效果不一样，这样就免除了制作大量的报表来实现同样效果，尤其是在企业内部业务繁杂，审批麻烦时，一张报表就可以解决所有问题。</span></p>  <p style="margin-left:39.0pt">&nbsp;</p>  <p style="margin-left:39.0pt">3.4<span style="font-family:宋体;Times New Roman&quot;;Times New Roman&quot;">、灵活的权限集成</span></p>  <p style="margin-left:39.0pt;text-indent:21.0pt;line-height: 150%"><span style="font-family:宋体;Times New Roman&quot;;Times New Roman&quot;">伴随着国内信息技术的高速发展，越来越多的政府和企事业单位使用信息管理系统来管理日常的工作生产，但是每个系统应用都有自己的权限体系模型，经常会出现一个用户在好几个系统应用里面都有设置，这样就产生了两个问题：</span>1<span style="font-family:宋体;Times New Roman&quot;;Times New Roman&quot;">：用户每访问一个系统，都要登录一次，既繁琐又要用户记忆很多的用户名和密码；</span>2<span style="font-family:宋体;Times New Roman&quot;;Times New Roman&quot;">：加大了对日常的组织分配和人员变更的维护的复杂性和高成本性。</span></p>  <p style="margin-left:41.25pt;text-indent:21.75pt;line-height: 150%">FineReport<span style="font-family:宋体;Times New Roman&quot;;Times New Roman&quot;">提供的权限认证，可以灵活的与其它系统进行统一认证，实现单点登录。</span></p>  <p style="margin-left:41.25pt;text-indent:21.75pt;line-height: 150%"><span style="font-family:宋体;Times New Roman&quot;;Times New Roman&quot;">当我们按照上面的三种类型的身份验证方式配置好相应权限后，需要将报表和相应的系统进行集成，我们采取的方式是：</span></p>  <p style="margin-left:19.4pt; text-indent:63.75pt;line-height:150%">1<span style="font-family:宋体;Times New Roman&quot;;Times New Roman&quot;">：当客户登录时通过</span>FR<span style="font-family:宋体;Times New Roman&quot;;Times New Roman&quot;">登录接口传递相应的用户名和密码给我们报表系统；</span></p>  <p style="margin-left:19.3pt; text-indent:63.75pt;line-height:150%">2<span style="font-family:宋体;Times New Roman&quot;;Times New Roman&quot;">：报表系统会匹配报表用户数据集中的用户名和传递过来的用户名，然后识别登录用户的角色，并根据角色绑定相应的权限；</span></p>  <p style="margin-left:19.2pt; text-indent:63.75pt;line-height:150%">3<span style="font-family:宋体;Times New Roman&quot;;Times New Roman&quot;">：把角色存储在</span>session<span style="font-family:宋体;Times New Roman&quot;;Times New Roman&quot;">里面，这样用户访问每张报表时，报表权限都会先和</span>session<span style="font-family:宋体;Times New Roman&quot;;Times New Roman&quot;">进行验证，满足的话就直接进行相应权限的操作，不满足的话则会提示没有权限。</span></p>  <p style="margin-left:19.1pt; text-indent:42.75pt;line-height:150%"><span style="font-family:宋体;Times New Roman&quot;;Times New Roman&quot;">具体的实现过程如图</span>3<span style="font-family:宋体;Times New Roman&quot;;Times New Roman&quot;">所示：</span></p>  <p style="margin-left:20.15pt; text-indent:79.5pt;line-height:150%"><img src="http://www.blogjava.net/images/blogjava_net/echoseason/集成7.png" width="676" height="488" alt="" /><br /></p>  <p style="margin-left:23.2pt; text-indent:212.15pt;line-height:150%"><span style="font-size:9.0pt;line-height:150%;font-family:宋体;Times New Roman&quot;;Times New Roman&quot;;color:gray">图</span><span style="font-size:9.0pt;line-height:150%;color:gray">3 </span><span style="font-size:9.0pt;line-height:150%;font-family:宋体;Times New Roman&quot;;Times New Roman&quot;;color:gray">权限集成示意图</span></p>  <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-family:宋体;Times New Roman&quot;;Times New Roman&quot;">注：</span>FR<span style="font-family:宋体;Times New Roman&quot;;Times New Roman&quot;">报表登录接口：</span><a href="http://../ReportServer?op=auth_login">http://../ReportServer?op=auth_login</a><span style="font-family:宋体;Times New Roman&quot;;Times New Roman&quot;">；</span></p>  <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FR<span style="font-family:宋体;Times New Roman&quot;;Times New Roman&quot;">报表登出接口：</span><a href="http://../ReportServer?op=auth_logout">http://../ReportServer?op=auth_logout</a><span style="font-family:宋体;Times New Roman&quot;;Times New Roman&quot;">；</span></p>  <p>&nbsp;</p>  <p><strong><span style="font-size:14.0pt;font-family:宋体;Times New Roman&quot;;Times New Roman&quot;">总结</span></strong><strong></strong></p>  <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FineReport<span style="font-family:宋体;Times New Roman&quot;;Times New Roman&quot;">同样作为</span>J2EE<span style="font-family:宋体;Times New Roman&quot;;Times New Roman&quot;">的一个应用，可以跟任何</span>J2EE<span style="font-family:宋体;Times New Roman&quot;;Times New Roman&quot;">架构的工程进行完美的无缝集成。</span></p>  <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-family:宋体;Times New Roman&quot;;Times New Roman&quot;">如有任何疑惑，</span>FR<span style="font-family:宋体;Times New Roman&quot;;Times New Roman&quot;">竭诚为您服务。</span></p>  <p>&nbsp;</p><img src ="http://www.blogjava.net/echoseason/aggbug/398989.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/echoseason/" target="_blank">season</a> 2013-05-08 14:45 <a href="http://www.blogjava.net/echoseason/archive/2013/05/08/398989.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java 报表软件finereport手机端使用教程</title><link>http://www.blogjava.net/echoseason/archive/2013/05/08/398988.html</link><dc:creator>season</dc:creator><author>season</author><pubDate>Wed, 08 May 2013 06:43:00 GMT</pubDate><guid>http://www.blogjava.net/echoseason/archive/2013/05/08/398988.html</guid><wfw:comment>http://www.blogjava.net/echoseason/comments/398988.html</wfw:comment><comments>http://www.blogjava.net/echoseason/archive/2013/05/08/398988.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/echoseason/comments/commentRss/398988.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/echoseason/services/trackbacks/398988.html</trackback:ping><description><![CDATA[<p><br /></p>  <p style="text-indent:16.5pt;line-height:16.5pt;"><span style="font-family:&quot;微软雅黑&quot;,&quot;sans-serif&quot;;color:#383838;">在手机端查看finereport报表之前，需要下载我们的移动端app。下载地址为：Android，在google play 里面搜索finereport或数据分析，然后下载安装。iphone、ipad，在app store里面搜索：finereport或数据分析，然后下载安装。</span></p>  <p style="text-indent:16.5pt;line-height:16.5pt;"><span style="font-family:&quot;微软雅黑&quot;,&quot;sans-serif&quot;;color:#383838;">下载完成之后，按照提示安装。</span></p>  <p align="left"><a name="a:2."><strong><span style="font-size:12.0pt;font-family:&quot;微软雅黑&quot;,&quot;sans-serif&quot;;color:#383838;">1.&nbsp;</span></strong></a><strong><span style="font-size:12.0pt;font-family: &quot;微软雅黑&quot;,&quot;sans-serif&quot;;color:#383838;">操作步骤</span></strong></p>    <p style="text-indent:16.5pt;line-height:16.5pt;"><span style="font-family:&quot;微软雅黑&quot;,&quot;sans-serif&quot;;color:#383838;">首先在PC端搭建好数据决策系统，然后再在手机端连接该决策系统。</span></p>  <p align="left" style="line-height: 16.5pt;"><a name="a:2.1"><strong><span style="font-size:11.5pt;font-family:&quot;微软雅黑&quot;,&quot;sans-serif&quot;;color:#383838;">1.1&nbsp;</span></strong></a><strong><span style="font-size:11.5pt;font-family: &quot;微软雅黑&quot;,&quot;sans-serif&quot;;color:#383838;">配置服务器连接</span></strong></p>    <ul type="disc">  <li style="color:darkblue;text-align:left;"><strong><span style="font-family:宋体;">进入配置界面</span></strong><strong></strong></li> </ul>  <p style="text-indent:16.5pt;line-height:16.5pt;"><span style="font-family:&quot;微软雅黑&quot;,&quot;sans-serif&quot;;color:#383838;">打开软件，首先需要连接服务器，点击菜单键，选择</span><strong><span style="font-family:&quot;微软雅黑&quot;,&quot;sans-serif&quot;;color:teal;">服务器</span></strong><span style="font-family:&quot;微软雅黑&quot;,&quot;sans-serif&quot;;color:#383838;">，进入服务器连接配置界面，如下图：</span></p>  <p style="text-indent:16.5pt;line-height:16.5pt;"><img src="http://www.blogjava.net/images/blogjava_net/echoseason/手机端1.png" width="477" height="284" alt="" /><br /></p>  <p style="text-indent:16.5pt;line-height:16.5pt;"><span style="font-family:&quot;微软雅黑&quot;,&quot;sans-serif&quot;;color:#383838;">服务器界面：</span></p>  <p style="text-indent:16.5pt;line-height:16.5pt;"><img src="http://www.blogjava.net/images/blogjava_net/echoseason/手机端2.png" width="479" height="286" alt="" /><br /></p>  <ul type="disc">  <li style="color:darkblue;text-align:left;"><strong><span style="font-family:宋体;">添加服务器</span></strong><strong></strong></li> </ul>  <p align="left" style="line-height: 16.5pt;"><a name="a:2.2"><strong><span style="font-size:11.5pt;font-family:&quot;微软雅黑&quot;,&quot;sans-serif&quot;;color:#383838;">1.2&nbsp;</span></strong></a><strong><span style="font-size:11.5pt;font-family: &quot;微软雅黑&quot;,&quot;sans-serif&quot;;color:#383838;">点击添加服务器，如下图：</span></strong></p>    <p style="text-indent:16.5pt;line-height:16.5pt;"><img src="http://www.blogjava.net/images/blogjava_net/echoseason/手机端3.png" width="476" height="515" alt="" /><br /></p>  <p style="text-indent:16.5pt;line-height:16.5pt;"><span style="font-family:&quot;微软雅黑&quot;,&quot;sans-serif&quot;;color:#383838;">点击完成，服务器连接则配置好了，接下来可以查看报表。</span></p>  <p>&nbsp;</p><img src ="http://www.blogjava.net/echoseason/aggbug/398988.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/echoseason/" target="_blank">season</a> 2013-05-08 14:43 <a href="http://www.blogjava.net/echoseason/archive/2013/05/08/398988.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>FineReport中调用Oracle存储过程</title><link>http://www.blogjava.net/echoseason/archive/2013/04/13/397806.html</link><dc:creator>season</dc:creator><author>season</author><pubDate>Sat, 13 Apr 2013 13:51:00 GMT</pubDate><guid>http://www.blogjava.net/echoseason/archive/2013/04/13/397806.html</guid><wfw:comment>http://www.blogjava.net/echoseason/comments/397806.html</wfw:comment><comments>http://www.blogjava.net/echoseason/archive/2013/04/13/397806.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/echoseason/comments/commentRss/397806.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/echoseason/services/trackbacks/397806.html</trackback:ping><description><![CDATA[<p align="center" style="text-align:center"><br /></p>  <p><strong><span style="font-size:12.0pt;font-family:宋体">方案：</span></strong><span style="font-family: 宋体">在报表中通过ajax在后台执行jsp，jsp获取参数并调用数据库存储过程，下面以一个实际例子来看。</span></p>  <p><strong><span style="font-size:12.0pt;font-family:宋体">环境：</span></strong><span style="font-family:宋体">Tomcat6.0</span><span style="font-family:宋体">，FineReport7.0.2，jdk1.6，oracle</span></p>  <p><strong><span style="font-size:12.0pt;font-family:宋体">步骤:</span></strong></p>  <p><span style="font-family:宋体">1:</span><span style="font-family:宋体">所有环境安装完毕，同时在oracle中创建一个删除数据的存储过程，如下图所示：</span></p>  <p align="center" style="text-align:center"><img src="http://www.blogjava.net/images/blogjava_net/echoseason/存储1.png" width="252" height="152" alt="" /><br /></p>  <p><span style="font-family:宋体">2</span><span style="font-family:宋体">：编写一个jsp页面，用以获取对应存储过程，如下所示：</span></p>  <p><img src="http://www.blogjava.net/images/blogjava_net/echoseason/存储2.png" width="730" height="452" alt="" /><br /></p>  <p><span style="font-family:宋体">3</span><span style="font-family:宋体">：新建报表模板，并在模板中建立按钮，书写对应js如下：</span></p>  <p><img src="http://www.blogjava.net/images/blogjava_net/echoseason/存储3.png" width="1102" height="449" alt="" /><br /></p>  <p><span style="font-family:宋体">4</span><span style="font-family:宋体">：实际运行测试，结果如下所示：</span></p>  <p><strong><span style="font-family:宋体">点击前：</span></strong></p>  <p align="center" style="text-align:center"><img src="http://www.blogjava.net/images/blogjava_net/echoseason/存储4.png" width="545" height="405" alt="" /><br /></p>  <p><strong><span style="font-family:宋体">点击后：</span></strong></p>  <p><img src="http://www.blogjava.net/images/blogjava_net/echoseason/存储5.png" width="524" height="392" alt="" /><br /></p>  <p><strong><span style="font-size:12.0pt;font-family:宋体">结束语：</span></strong></p>  <p><span style="font-family:宋体">例子比较简单，但是实际的时候一些编码等问题还是需要考虑的，如果传入数组参数另说了。</span></p><img src ="http://www.blogjava.net/echoseason/aggbug/397806.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/echoseason/" target="_blank">season</a> 2013-04-13 21:51 <a href="http://www.blogjava.net/echoseason/archive/2013/04/13/397806.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>报表FineReport7.0优化功能之下拉树</title><link>http://www.blogjava.net/echoseason/archive/2013/04/13/397805.html</link><dc:creator>season</dc:creator><author>season</author><pubDate>Sat, 13 Apr 2013 13:49:00 GMT</pubDate><guid>http://www.blogjava.net/echoseason/archive/2013/04/13/397805.html</guid><wfw:comment>http://www.blogjava.net/echoseason/comments/397805.html</wfw:comment><comments>http://www.blogjava.net/echoseason/archive/2013/04/13/397805.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/echoseason/comments/commentRss/397805.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/echoseason/services/trackbacks/397805.html</trackback:ping><description><![CDATA[<p><br /></p>  <p style="margin-top:15.0pt;margin-right:0cm;margin-bottom: 12.0pt;margin-left:0cm;text-autospace:ideograph-other"><a name="a:1." style="width: 20px; height: 20px; text-indent: 20px; background-image: url(http://www.blogjava.net/CuteSoft_Client/CuteEditor/Load.ashx?type=image&amp;file=anchor.gif); background-repeat: no-repeat no-repeat;"></a><strong><span style="font-size:12.0pt;color:#383838">1. </span></strong><strong><span style="font-size:12.0pt;font-family:宋体;Times New Roman&quot;;Times New Roman&quot;;color:#383838">控件效果</span></strong><strong></strong></p>  <p style="margin-top:3.75pt;margin-right:0cm;margin-bottom: 3.75pt;margin-left:0cm;text-indent:16.5pt;line-height:16.5pt;text-autospace: ideograph-other"><img src="http://www.blogjava.net/images/blogjava_net/echoseason/下拉1.png" width="330" height="241" alt="" /><br /></p>  <p style="margin-top:3.75pt;margin-right:0cm;margin-bottom: 3.75pt;margin-left:0cm;text-indent:16.5pt;line-height:16.5pt;text-autospace: ideograph-other"><span style="font-family:&quot;微软雅黑&quot;,&quot;sans-serif&quot;;color:red">注：6.5.5版本会在输入框中显示选择值的完整路径。</span></p>  <p style="margin-top:15.0pt;margin-right:0cm;margin-bottom: 12.0pt;margin-left:0cm;text-autospace:ideograph-other"><a name="a:2." style="width: 20px; height: 20px; text-indent: 20px; background-image: url(http://www.blogjava.net/CuteSoft_Client/CuteEditor/Load.ashx?type=image&amp;file=anchor.gif); background-repeat: no-repeat no-repeat;"></a><strong><span style="font-size:12.0pt;color:#383838">2. </span></strong><strong><span style="font-size:12.0pt;font-family:宋体;Times New Roman&quot;;Times New Roman&quot;;color:#383838">基本属性</span></strong><strong></strong></p>  <p style="margin-top:8.25pt;margin-right:0cm;margin-bottom: 8.25pt;margin-left:0cm;text-autospace:ideograph-other"><a name="a:2.1" style="width: 20px; height: 20px; text-indent: 20px; background-image: url(http://www.blogjava.net/CuteSoft_Client/CuteEditor/Load.ashx?type=image&amp;file=anchor.gif); background-repeat: no-repeat no-repeat;"></a><strong><span style="font-size:11.0pt;color:#383838">2.1 </span></strong><strong><span style="font-size:11.0pt;font-family: 宋体;Times New Roman&quot;;Times New Roman&quot;; color:#383838">控件名</span></strong><strong></strong></p>  <p style="margin-top:3.75pt;margin-right:0cm;margin-bottom: 3.75pt;margin-left:0cm;text-indent:16.5pt;line-height:16.5pt;text-autospace: ideograph-other"><span style="font-family:&quot;微软雅黑&quot;,&quot;sans-serif&quot;;color:#383838">如</span><u><span style="font-family:&quot;微软雅黑&quot;,&quot;sans-serif&quot;;color:blue"><a href="http://www.finereporthelp.com/help/6/4/0.html"><span style="color:blue">文本控件</span></a></span></u><span style="font-family:&quot;微软雅黑&quot;,&quot;sans-serif&quot;;color:#383838">。</span></p>  <p style="margin-top:8.25pt;margin-right:0cm;margin-bottom: 8.25pt;margin-left:0cm;text-autospace:ideograph-other"><a name="a:2.2" style="width: 20px; height: 20px; text-indent: 20px; background-image: url(http://www.blogjava.net/CuteSoft_Client/CuteEditor/Load.ashx?type=image&amp;file=anchor.gif); background-repeat: no-repeat no-repeat;"></a><strong><span style="font-size:11.0pt;color:#383838">2.2 </span></strong><strong><span style="font-size:11.0pt;font-family: 宋体;Times New Roman&quot;;Times New Roman&quot;; color:#383838">可用</span></strong><strong></strong></p>  <p style="margin-top:3.75pt;margin-right:0cm;margin-bottom: 3.75pt;margin-left:0cm;text-indent:16.5pt;line-height:16.5pt;text-autospace: ideograph-other"><span style="font-family:&quot;微软雅黑&quot;,&quot;sans-serif&quot;;color:#383838">如</span><u><span style="font-family:&quot;微软雅黑&quot;,&quot;sans-serif&quot;;color:blue"><a href="http://www.finereporthelp.com/help/6/4/0.html"><span style="color:blue">文本控件</span></a></span></u><span style="font-family:&quot;微软雅黑&quot;,&quot;sans-serif&quot;;color:#383838">。</span></p>  <p style="margin-top:8.25pt;margin-right:0cm;margin-bottom: 8.25pt;margin-left:0cm;text-autospace:ideograph-other"><a name="a:2.3" style="width: 20px; height: 20px; text-indent: 20px; background-image: url(http://www.blogjava.net/CuteSoft_Client/CuteEditor/Load.ashx?type=image&amp;file=anchor.gif); background-repeat: no-repeat no-repeat;"></a><strong><span style="font-size:11.0pt;color:#383838">2.3 </span></strong><strong><span style="font-size:11.0pt;font-family: 宋体;Times New Roman&quot;;Times New Roman&quot;; color:#383838">可见</span></strong><strong></strong></p>  <p style="margin-top:3.75pt;margin-right:0cm;margin-bottom: 3.75pt;margin-left:0cm;text-indent:16.5pt;line-height:16.5pt;text-autospace: ideograph-other"><span style="font-family:&quot;微软雅黑&quot;,&quot;sans-serif&quot;;color:#383838">如</span><u><span style="font-family:&quot;微软雅黑&quot;,&quot;sans-serif&quot;;color:blue"><a href="http://www.finereporthelp.com/help/6/4/0.html"><span style="color:blue">文本控件</span></a></span></u><span style="font-family:&quot;微软雅黑&quot;,&quot;sans-serif&quot;;color:#383838">。</span></p>  <p style="margin-top:8.25pt;margin-right:0cm;margin-bottom: 8.25pt;margin-left:0cm;text-autospace:ideograph-other"><a name="a:2.4" style="width: 20px; height: 20px; text-indent: 20px; background-image: url(http://www.blogjava.net/CuteSoft_Client/CuteEditor/Load.ashx?type=image&amp;file=anchor.gif); background-repeat: no-repeat no-repeat;"></a><strong><span style="font-size:11.0pt;color:#383838">2.4 </span></strong><strong><span style="font-size:11.0pt;font-family: 宋体;Times New Roman&quot;;Times New Roman&quot;; color:#383838">控件值</span></strong><strong></strong></p>  <p style="margin-top:3.75pt;margin-right:0cm;margin-bottom: 3.75pt;margin-left:0cm;text-indent:16.5pt;line-height:16.5pt;text-autospace: ideograph-other"><span style="font-family:&quot;微软雅黑&quot;,&quot;sans-serif&quot;;color:#383838">给下拉树赋默认值，根据下拉树返回值的不同，默认值的输入格式不相同，必须与返回值的格式保持一致。</span></p>  <p style="margin-top:8.25pt;margin-right:0cm;margin-bottom: 8.25pt;margin-left:0cm;text-autospace:ideograph-other"><a name="a:2.5" style="width: 20px; height: 20px; text-indent: 20px; background-image: url(http://www.blogjava.net/CuteSoft_Client/CuteEditor/Load.ashx?type=image&amp;file=anchor.gif); background-repeat: no-repeat no-repeat;"></a><strong><span style="font-size:11.0pt;color:#383838">2.5 </span></strong><strong><span style="font-size:11.0pt;font-family: 宋体;Times New Roman&quot;;Times New Roman&quot;; color:#383838">数据</span></strong><strong></strong></p>  <p style="margin-left:18.0pt;text-indent:0cm;line-height:12.0pt;text-autospace:ideograph-other"><span style="font-family:Symbol;color:darkblue">&#183;<span style="font-size: 7pt; line-height: normal; font-family: 'Times New Roman';">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong><span style="font-family:宋体;Times New Roman&quot;; color:darkblue">自动构建</span></strong><strong></strong></p>  <p style="margin-top:3.75pt;margin-right:0cm;margin-bottom: 3.75pt;margin-left:0cm;text-indent:16.5pt;line-height:16.5pt;text-autospace: ideograph-other"><span style="font-family:&quot;微软雅黑&quot;,&quot;sans-serif&quot;;color:#383838">自动构建树能够根据数据自动构建出下拉树，无需一层一层定义数据，但是其必须使用树数据集来构建。</span></p>  <p style="margin-left:18.0pt;text-indent:0cm;line-height:12.0pt;text-autospace:ideograph-other"><span style="font-family:Symbol;color:darkblue">&#183;<span style="font-size: 7pt; line-height: normal; font-family: 'Times New Roman';">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong><span style="font-family:宋体;Times New Roman&quot;; color:darkblue">分层构建</span></strong><strong></strong></p>  <p style="margin-top:3.75pt;margin-right:0cm;margin-bottom: 3.75pt;margin-left:0cm;text-indent:16.5pt;line-height:16.5pt;text-autospace: ideograph-other"><span style="font-family:&quot;微软雅黑&quot;,&quot;sans-serif&quot;;color:#383838">不是所有的数据都能自动构建出下拉树，因此需要分层构建。</span></p>  <p style="margin-top:3.75pt;margin-right:0cm;margin-bottom: 3.75pt;margin-left:0cm;text-indent:16.5pt;line-height:16.5pt;text-autospace: ideograph-other"><strong><span style="font-family: &quot;微软雅黑&quot;,&quot;sans-serif&quot;;color:teal">层次1</span></strong></p>  <p style="margin-top:3.75pt;margin-right:0cm;margin-bottom: 3.75pt;margin-left:0cm;text-indent:16.5pt;line-height:16.5pt;text-autospace: ideograph-other"><span style="font-family:&quot;微软雅黑&quot;,&quot;sans-serif&quot;;color:#383838">层次1通过</span><u><span style="font-family:&quot;微软雅黑&quot;,&quot;sans-serif&quot;; color:blue"><a href="http://www.finereporthelp.com/help/6/0/3/0/1.html"><span style="color:blue">数据字典</span></a></span></u><span style="font-family:&quot;微软雅黑&quot;,&quot;sans-serif&quot;;color:#383838">来定义下拉框的实际值与显示值。</span></p>  <p style="margin-top:3.75pt;margin-right:0cm;margin-bottom: 3.75pt;margin-left:0cm;text-indent:16.5pt;line-height:16.5pt;text-autospace: ideograph-other"><strong><span style="font-family: &quot;微软雅黑&quot;,&quot;sans-serif&quot;;color:teal">层次2</span></strong></p>  <p style="margin-top:3.75pt;margin-right:0cm;margin-bottom: 3.75pt;margin-left:0cm;text-indent:16.5pt;line-height:16.5pt;text-autospace: ideograph-other"><span style="font-family:&quot;微软雅黑&quot;,&quot;sans-serif&quot;;color:#383838">层次2的数据一般会根据层次1的数据进行过滤，因此需要定义成数据集，然后通过数据查询返回数据集定义的列。一般数据集定义成：</span><strong><span style="font-family:&quot;微软雅黑&quot;,&quot;sans-serif&quot;; color:cadetblue">SELECT </span></strong><strong><span style="font-family:&quot;微软雅黑&quot;,&quot;sans-serif&quot;;color:cadetblue">字段 FROM 表名 WHERE 层次1的字段 = '${layer1}'</span></strong></p>  <p style="margin-top:3.75pt;margin-right:0cm;margin-bottom: 3.75pt;margin-left:0cm;text-indent:16.5pt;line-height:16.5pt;text-autospace: ideograph-other"><span style="font-family:&quot;微软雅黑&quot;,&quot;sans-serif&quot;;color:red">注：layer1表示取层次1节点的值，若在层次3中调用，则是SELECT 字段 FROM 表名 WHERE 层次2的字段 = '${layer2}'依次类推。</span></p>  <p style="margin-top:15.0pt;margin-right:0cm;margin-bottom: 12.0pt;margin-left:0cm;text-autospace:ideograph-other"><a name="a:3." style="width: 20px; height: 20px; text-indent: 20px; background-image: url(http://www.blogjava.net/CuteSoft_Client/CuteEditor/Load.ashx?type=image&amp;file=anchor.gif); background-repeat: no-repeat no-repeat;"></a><strong><span style="font-size:12.0pt;color:#383838">3. </span></strong><strong><span style="font-size:12.0pt;font-family:宋体;Times New Roman&quot;;Times New Roman&quot;;color:#383838">高级属性</span></strong><strong></strong></p>  <p style="margin-top:8.25pt;margin-right:0cm;margin-bottom: 8.25pt;margin-left:0cm;text-autospace:ideograph-other"><a name="a:3.1" style="width: 20px; height: 20px; text-indent: 20px; background-image: url(http://www.blogjava.net/CuteSoft_Client/CuteEditor/Load.ashx?type=image&amp;file=anchor.gif); background-repeat: no-repeat no-repeat;"></a><strong><span style="font-size:11.0pt;color:#383838">3.1 </span></strong><strong><span style="font-size:11.0pt;font-family: 宋体;Times New Roman&quot;;Times New Roman&quot;; color:#383838">多选</span></strong><strong></strong></p>  <p style="margin-top:3.75pt;margin-right:0cm;margin-bottom: 3.75pt;margin-left:0cm;text-indent:16.5pt;line-height:16.5pt;text-autospace: ideograph-other"><span style="font-family:&quot;微软雅黑&quot;,&quot;sans-serif&quot;;color:#383838">即确定下拉树类型，勾选多选即为多选下拉树，去掉勾选即为单选下拉树。</span></p>  <p style="margin-top:3.75pt;margin-right:0cm;margin-bottom: 3.75pt;margin-left:0cm;text-indent:16.5pt;line-height:16.5pt;text-autospace: ideograph-other"><img src="http://www.blogjava.net/images/blogjava_net/echoseason/下拉2.png" width="706" height="261" alt="" /><br /></p>  <p style="margin-top:8.25pt;margin-right:0cm;margin-bottom: 8.25pt;margin-left:0cm;text-autospace:ideograph-other"><a name="a:3.2" style="width: 20px; height: 20px; text-indent: 20px; background-image: url(http://www.blogjava.net/CuteSoft_Client/CuteEditor/Load.ashx?type=image&amp;file=anchor.gif); background-repeat: no-repeat no-repeat;"></a><strong><span style="font-size:11.0pt;color:#383838">3.2 </span></strong><strong><span style="font-size:11.0pt;font-family: 宋体;Times New Roman&quot;;Times New Roman&quot;; color:#383838">异步加载</span></strong><strong></strong></p>  <p style="margin-top:3.75pt;margin-right:0cm;margin-bottom: 3.75pt;margin-left:0cm;text-indent:16.5pt;line-height:16.5pt;text-autospace: ideograph-other"><span style="font-family:&quot;微软雅黑&quot;,&quot;sans-serif&quot;;color:#383838">勾选即为使用异步加载，下拉树中首次只加载父节点的数据，当点击父节点前面的加号后才会重新与数据库交互取出对应的子节点数据，适用于数据量大的情况。</span></p>  <p style="margin-top:3.75pt;margin-right:0cm;margin-bottom: 3.75pt;margin-left:0cm;text-indent:16.5pt;line-height:16.5pt;text-autospace: ideograph-other"><span style="font-family:&quot;微软雅黑&quot;,&quot;sans-serif&quot;;color:#383838">去掉勾选表示下拉树中的数据是一次性全部取出，适用于数据量小的情况。</span></p>  <p style="margin-top:8.25pt;margin-right:0cm;margin-bottom: 8.25pt;margin-left:0cm;text-autospace:ideograph-other"><a name="a:3.3" style="width: 20px; height: 20px; text-indent: 20px; background-image: url(http://www.blogjava.net/CuteSoft_Client/CuteEditor/Load.ashx?type=image&amp;file=anchor.gif); background-repeat: no-repeat no-repeat;"></a><strong><span style="font-size:11.0pt;color:#383838">3.3 </span></strong><strong><span style="font-size:11.0pt;font-family: 宋体;Times New Roman&quot;;Times New Roman&quot;; color:#383838">只返回叶子节点</span></strong><strong></strong></p>  <p style="margin-top:3.75pt;margin-right:0cm;margin-bottom: 3.75pt;margin-left:0cm;text-indent:16.5pt;line-height:16.5pt;text-autospace: ideograph-other"><span style="font-family:&quot;微软雅黑&quot;,&quot;sans-serif&quot;;color:#383838">勾选只返回叶子节点，即下拉树文本框中只返回该节点的最后一层数据，不勾选即表示选中什么则返回什么，如下表：</span></p>  <table border="0" cellspacing="0" cellpadding="0" style="margin-left:23.25pt;border-collapse:collapse;">  <tbody><tr>   <td width="109" style="width: 81.75pt; border: 1pt solid black; padding: 3.75pt 3.75pt 3pt;">   <p align="left" style="text-indent: 16.5pt; line-height: 16.5pt;"><span style="font-family:   &quot;微软雅黑&quot;,&quot;sans-serif&quot;;color:dimgray">勾选叶子节点</span></p>   </td>   <td width="467" colspan="2" style="width: 350.6pt; border-style: solid solid solid none; border-top-color: black; border-right-color: black; border-bottom-color: black; border-top-width: 1pt; border-right-width: 1pt; border-bottom-width: 1pt; padding: 3.75pt 3.75pt 3pt;">   <p align="left" style="text-indent: 16.5pt; line-height: 16.5pt;"><span style="font-family:   &quot;微软雅黑&quot;,&quot;sans-serif&quot;;color:dimgray">不勾选叶子节点</span></p>   </td>  </tr>  <tr>   <td width="109" style="width: 81.75pt; border-style: none solid solid; border-right-color: black; border-bottom-color: black; border-left-color: black; border-right-width: 1pt; border-bottom-width: 1pt; border-left-width: 1pt; padding: 3.75pt 3.75pt 3pt;">   <p align="left" style="text-indent: 16.5pt; line-height: 16.5pt;"><span style="font-family:   &quot;微软雅黑&quot;,&quot;sans-serif&quot;;color:dimgray">选中a</span></p>   </td>   <td width="179" style="width:134.4pt;border-top:none;border-left:none;   border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;   padding:3.75pt 3.75pt 3.0pt 3.75pt">   <p align="left" style="text-indent: 16.5pt; line-height: 16.5pt;"><span style="font-family:   &quot;微软雅黑&quot;,&quot;sans-serif&quot;;color:dimgray">返回值：a1,a2,a3</span></p>   </td>   <td width="288" style="width:216.15pt;border-top:none;border-left:none;   border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;   padding:3.75pt 3.75pt 3.0pt 3.75pt">   <p align="left" style="text-indent: 16.5pt; line-height: 16.5pt;"><span style="font-family:&quot;微软雅黑&quot;,&quot;sans-serif&quot;;color:dimgray">a</span></p>   </td>  </tr> </tbody></table>  <p style="margin-top:3.75pt;margin-right:0cm;margin-bottom: 3.75pt;margin-left:0cm;text-indent:16.5pt;line-height:16.5pt;text-autospace: ideograph-other"><img src="http://www.blogjava.net/images/blogjava_net/echoseason/下拉3.png" width="803" height="268" alt="" /><br /></p>  <p style="margin-top:3.75pt;margin-right:0cm;margin-bottom: 3.75pt;margin-left:0cm;text-indent:16.5pt;line-height:16.5pt;text-autospace: ideograph-other"><span style="font-family:&quot;微软雅黑&quot;,&quot;sans-serif&quot;;color:red">注：只返回叶子节点只对多选下拉树起作用。</span></p>  <p>&nbsp;</p> <div id="haloword-lookup" class="ui-widget-content ui-draggable"><div id="haloword-title"><span id="haloword-word"></span><a herf="#" id="haloword-pron" class="haloword-button" title="发音"></a><audio id="haloword-audio"></audio><div id="haloword-control-container"><a herf="#" id="haloword-add" class="haloword-button" title="加入单词表"></a><a herf="#" id="haloword-remove" class="haloword-button" title="移出单词表"></a><a href="#" id="haloword-open" class="haloword-button" title="查看单词详细释义" target="_blank"></a><a herf="#" id="haloword-close" class="haloword-button" title="关闭查询窗"></a></div></div><div id="haloword-content"></div></div><img src ="http://www.blogjava.net/echoseason/aggbug/397805.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/echoseason/" target="_blank">season</a> 2013-04-13 21:49 <a href="http://www.blogjava.net/echoseason/archive/2013/04/13/397805.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>