标题：华丹Charisma在线自定义Web报表
完整的运行平台
CHARISMA报表本身就是一款完善的运行平台，包括用户管理、授权管理等，用户可以直接使用，无需二次开发。而其它报表工具，一般是以组件或控件的方式提供给开发商来二次开发的，用户无法直接使用。
CHARISMA报表运行界面图如下：
  
支持在线自定义
其它报表工具，虽然了支持自定义，但他们走的技术路线是：
C/S模式的报表设定器－>生成XML报表模板－>发布到WEB服务器中－>通过程序（JSP）向报表引擎中传入参数（报表条件等）－>报表引擎处理、展现数据。
从上面可以看出，虽然这些报表工具也支持自定义，即通过他们的报表设计器来自定义报表模板，但是需要发布、需要手工编写JSP页面来调用报表引擎，需要在JSP中编辑条件输入框，然后处理条件值，传给报表引擎。这些操作，对于最终用户来说都很难办到，即使能办到，也非常不方便，无法完成在线自定义。因此，这些报表工具的自定义都是局部的自定义。
CHARISMA报表提供了在线WEB报表设计器，可以在线自定义JAVA报表，全智能化生成报表条件等资源，并支持在线发布JAVA报表、分配JAVA报表权限，用户不用写一行代码，也不用重新发布WEB应用。
尤其适合综合查询
在业内，在综合查询方面，没有一款报表工具可以与CHARISMA比拟的。由于CHARISMA报表智能化生成报表条件及其它资源，支持动态排序、自动分页、不用任意二次开发等特性，所以特别适合于综合查询。
用户可以任意组合输入条件，凭借CHARISMA报表强大的功能，可以展现任意复杂的查询结果。
自动生成报表条件输入界面如下：
基于J2EE、XHTML、CSS的技术实现
CHARISMA报表引擎采用纯J2EE技术构建，WEB层展现则采用纯XHTML+CSS实现，从技术上讲是相当先进的。
而不同于目前业内很多报表工具，是采用ACTIVEX控件实现的，这种技术已相对落后，而且还必须在浏览器中安装插件，降低安全性，而且也不兼容浏览器，一般只支持IE。
提供大量WEB组件
CHARISMA报表不是一个报表组件或插件，它提供了大量WEB组件，如下拉框、弹出字典、日期选择框、框架集、标签页等。而其它报表工具或组件是没有这些功能的。
下拉框：
弹出字典：
日期选择框：
框架集：
  TAB标签页：
  
智能化报表生成向导
报表制作过程完全基于WEB操作，用户可以在多个客户端同时开发JAVA报表。
系统提供了SQL报表向导及存储过程报表向导。
SQL报表制作向导如下图所示。
  通过该向导即可完成SQL语句的生成， SQL设定界面如下图：
  提交后系统自动生成所需的JAVA报表资源（如报表数据列信息，报表条件信息等），从而完成基本报表制作。在此基础上用户可以设定其它信息，完成各种类型复杂的是JAVA报表。
生成的报表界面（普通列表）如下图所示：
  从上图可以看出，设定好SQL语句，系统自动生成所有报表资源，自动生在条件框、动态排序、自动分页等。
在线设计报表
CHARISMA报表创新地推出了基于WEB的在线报表设计器。通过报表设计器，可以在线定制各类复杂的JAVA报表，包括分组报表、图表报表、交叉报表等，并可方便进行报表发布、预览等。设计器界面如下图:
  
挂载所有数据库
CHARISMA平台可以将企业内所有数据库同时挂载到CHARISMA报表引擎中，不管这些数据库是什么类型的关系型数据库，也不管这些数据库运行于什么操作系统平台上。
支持多个数据库间表的关联查询
CHARISMA报表支持多个数据库（包括异种）间表的关联查询，支持内连接及左外联接。并且关联查询的子数据源可以是非SQL获取（如存储过程获得）。
如电信行业，其计费系统与业务系统的数据库一般分为两个数据库，且数据库类型也有可能不同，但经常需要对这两个数据库中的数据表进行关联查询获取所需数据。目前业界同类产品中基本上都没有解决此问题，而CHARISMA报表提供了非常全面的解决方案。
支持行间、单元格间复杂计算
CHARISMA报表提供了一次表达式及二次表达式，可以对JAVA报表数据源进行二次加工处理，支持行间，单元格间复杂计算。
如：repField("sale1")+repField("sale2");//单元格间值相加
repField("sale",rowNo()-1);//取上一行sale列值
repField("sale","{id}=111");//取id列值为111的行中sale的值
支持数据源过滤
repField、repTag、sum、average、count等函数均支持数据源过滤，如：
sum("sale","{type}==1 && {flag}==1")取满足type列值=1并且flag列值=1的行的sale列的和。
支持多个数据库数据展现在同一报表中
CHARISMA报表可以实现在同一张JAVA报表中，同时显示源于多个数据库中的数据，实现方式主要有：
&Oslash; 多个数据库间表的关联查询。
&Oslash; 通过子数据源获取不同数据库中的数据，如:
repField("class.classname")，取当前报表中class子数据源中classname列值。
repField("stuscore .score","{subject}==5")，取当前JAVA报表中stuscore子数据源中subject列值等5的score列值。
支持二次数据源
所谓二次数据源就是一次性将当前JAVA报表中所用的数据记录全取出来，然后再通过过滤条件取得各子报表的结果集。这样做的优势是避免多次查询数据库，提高WEB报表运行效率，特别是对于通过存储过程进行复杂统计，耗时很多的统计。
如数据源：
子报表过滤：
SQL支持嵌入标签
CHARISMA报表支持在SQL中嵌入标签，可以用同一语句处理复杂的情况，例如：
SELECT USERID, USERNAME, 'acl', REGION, GRADE, DEPT, POST, DISPNO, USERSTAT, REMARK FROM ST_SYSUSER WHERE USERID <> '[%=superAdmin()%]' AND USERID <> '-1' AND USERID <> '0' AND USERID <> '[%=curUserID()%]' AND REGION = ? AND GRADE = ? AND DEPT LIKE ? AND POST = ? AND USERID = ? AND USERNAME like ? AND USERSTAT = 1 AND REGION LIKE '[%=curRegion()%]%' [%=if(userGrade(curUserID())!=1,"AND DEPT LIKE '"+curDept()+"%'","")%] ORDER BY DISPNO ASC,USERNAME ASC
支持复杂灵活的交叉报表
交叉报表效果图：
  交叉报表的特点：
1、支持多级行集、列集及值集，不象有的报表工具，只支持固定级数。
2、 在算法上，CHARISMA报表在处理交叉报表上具有极高的效率，一次性处理完所有数据。
3、支持表头双斜线。
4、 支持动态排序。
5、 行集、列集及值集均支持链接，可钻取子信息。
6、横向、纵向均支持多级分组。
7、横向汇总及横向分组汇总可设定居左或居右。
8、 纵向汇总及纵向分组汇总可设定居上或在下。
9、所有类型汇总均可以设定多个。
10、支持按行集、值集、横向分组汇总、汇总进行排序。
11、顶部标题（列集）支持横向、纵向合并。
12、左端行集支持横向、纵向合并。
支持复杂的WEB报表表头，表体、表尾
通过数据表格，可实现复杂的表头、表体及表尾，如图：
支持图表叠加及多轴
下图是三个子图表叠加而成，并具有双轴。
  
与开发功能结合，可实现复杂业务模块
CHARISMA报表与CHARISMA平台的开发功能浑为一体，紧密集成，可以非常方便开发业务系统，这是其它报表工具、组件办不到的。
在一个业务系统中，除了综合查询、统计、报表模块外，还存在着大量业务模块，这些业务模块，包插增、删、改及其它如审批等操作，在处理这些操作时，一般都是需要将数据展现出来，然后在这些数据基础上处理业务操作。
如：
基于交叉报表的批量更新：
更新、删除、操作、子菜单：
可以非常方便集成到其它业务系统中
CHARISMA报表，可以非常方便集成到其它业务系统中，如CRM、ERP、OA、HIS等，使这些系统具备在线自定义WEB报表的功能，提高产品的竞争力。
集成效果如图：