Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.
杰表 .2008 布局模型设计 杭州杰创软件拥有版权 .www.jatools.com
组件 @ 合计 @ 金额 @ 单价 @ 数量 @ 产品 @ 客户号 @ 类别号 @ 总序号   合计 金额 单价 数量 产品 客户号 类别号 总序号           数据库 4 11 13 oracle       台式机 4 9 12  ...
简单列表   总计                           总分 姓名 学号   总计   @ 总分 @ 姓名 @ 学号 总分 姓名 学号
分组报表   总计       合计                   高二   合计             高一 总分 姓名 学号 班级   总计       合计       @ 班级 总分 姓名 学号 班级
双表连接                                               * 金额 单价 备件数量 备件名称 备件号 序号 索赔备件                                   *      ...
固定格式表 0.00  0.00    0.00  0.00  五、净利润 028       减:其他 027       加:其他 026       减:所得税 025   0.00  0.00  四、利润总额 024       加:以...
交叉报表                 欧洲                  北美                  东南亚                  小计                 台湾                 澳门...
布局诀 <ul><li>见到横表,从表模板扩展 </li></ul><ul><li>见到主表,连接从数据集成合集, </li></ul><ul><li>打印主表,从表 </li></ul><ul><li>表布局 </li></ul><ul><l...
从表数据集扩展 <ul><li>年份列横转 , 且列数不定 , 产品列保持 </li></ul><ul><li>右下角 , 黄色部分为交叉数据区 , 每单元可能包含不止一个数据 , 如既可以统计合计 , 又同时计算平均值 </li></ul>3...
从表数据集扩展 ( 多级 ) <ul><li>年 , 季列横转 </li></ul><ul><li>红色列 , 列名是一个特殊 , 二维键 </li></ul><ul><li>新列 = 年 / 季 +sum( 销售额 ) </li></ul>....
直连 <ul><li>A 为主数据集 ,B,C 为从数据集 ,D 为合集 </li></ul><ul><li>合表记录数及顺序与主数据集一致 </li></ul><ul><li>对主数据集有 , 从数据集没有的行 , 合集中空行补足 , 如 D...
合集中的列 <ul><li>静态列 </li></ul><ul><li>=name  // 静态列的引用 </li></ul><ul><li>动态列 </li></ul><ul><li>=sales{year,quauter}  </li></...
简单布局 <ul><li>数据合集 D 由三部分组成 .a,b,c </li></ul><ul><li>设计时 , 设计三个表 , 分别绑定合集中的 a,b,c 三个数据集 </li></ul>1. 数据合集 (D) a b c 2. 设计时布...
主表布局 <ul><li>主表每打印完一行 , 打印从表行 </li></ul><ul><li>从表行当前数据 , 取决于主键位置 </li></ul>空调 40 空调 洗衣机 20 洗衣机 冰箱 60 冰箱 电视机 100 电视机 null ...
堆叠交叉 销售额(地区,客户,年,季) 销售额(地区,客户,年,*) 销售额(地区,*,年,季) 销售额(地区,*,年,*) 销售额(产品,年,季) 销售额(产品,年,*) = 销售额 = 销售额 产品 = 销售额 = 销售额 合计 = 销售额...
合集数据引用 <ul><li>主表每打印完一行 , 打印从表行 </li></ul><ul><li>从表行当前数据 , 取决于主键位置 </li></ul>      合计       = 客户 = 地区 合计 = 季 应收款 = 年     ...
合集数据引用 ( 一 ) 规则一:是先定位列 , 后定位行 =销售{年,季}{地区,客户} =应收款 {地区,客户} 列定位  行定位 列定位  行定位 静态列时定位  动态列时定位 = 应收款 { 地区 , 客户 }.sum() = 销售 {...
合集数据引用 ( 二 ) 规则二:行或列满键时,可以省去 =销售  // 等价,列键,行键均满 =应收款.sum()  // 等价 = 应收款 { 地区 , 客户 }.sum() = 销售 { 年 , 季 }{ 地区 , 客户 }.sum() ...
合集数据引用 ( 三 ) 规则二:引用上级,可特指行列键 =销售 / 销售{年}{地区,客户}  // 等价,意即本季与本年合计所占比重 = 应收款 .sum() = 销售 .sum() = 销售 .sum() 合计 = 应收款 = 销售 .s...
合集数据引用 ( 四 ) this =销售{年,*}  <=>  =销售{年} =销售{NEXT.年,*}  <=>  =销售{NEXT.年} =销售{*,*}  <=>  =销售{*} =销售{PREV.年,*}  <=>  =销售{PREV...
合集上下文 合集数据列, 数据列,动态树 销售,应收款,应付款 行组树
合集上下文 = 年  季  应收款余额  <=>  = 应收款余额 = 年  应收款余额  <=>  = 年  应收款余额 =* 应收款余额  = 年  地区  城市  销售  = 年  地区  销售  =* 销售  = 销售
合集上下文 灌入变量 : 年度 [.=1991] 季度 .sum()  季度 应收款余额 地区 城市 销售
合集上下文 有游标的情况下 , 年度 =1991, 季度 =1 @ 销售额 季度 @ 销售额 年度  季度 @ 销售额  上述等价  年度 [.=1991] 季度 [1]@ 销售额 年度 [postion()-1] 销售额 .sum()  上一...
合集上下文 销售表 . 应收款余额 { 华北  城市 }{ 年  季 }
合集数据引用公式 =销售{年,月}{地区,客户}  // 等价 =应收款{地区,客户}  // 等价 =销售{年,月}{地区,客户}.sum()  // 等价 以下二个公式等价 =销售{年}{地区,客户}.sum() =销售{年}.sum() ...
从表模板扩展 A 表A打印后,模板被横向扩展 规则: 同列,同宽的表被扩展 = 销售额 = 销售额 = 销售额 = 销售额 = 销售额 = 销售额 = 销售额 = 销售额 = 销售额 产品 = 销售额 = 销售额 = 销售额 = 销售额 = 销...
纵向扩展 ( 打印扩展 ) A 表B随表A向下打印 规则: 同行,同高的表被打印 打印扩展不扩展模板 B = 销售额 = 销售额 产品 = 销售额 = 销售额 合计 = 销售额 = 销售额 = 客户 = 地区 合计 = 季度 = 年度 6 1 ...
超级 cell 打印流程 <ul><li>2. 行打印流程 </li></ul>1. 表格打印流程
 
<ul><li>Dataset ds = null; </li></ul><ul><li>ds.group( 地区 , 城市 ); </li></ul><ul><li>Dataset sales = getSales(); </li></ul>...
同期比 ( 普通列表中 ) 报表数据/年度销售表 Row 38 160 1994 2 122 1993 20 120 1992 - 100 1991 与去年增加 销售额 年 160 1994 122 1993 120 1992 100 1991...
字段类型 <ul><li>节点字段 </li></ul><ul><li>value:  如果是行节点 , 取行 row, 取得值 , 否则 , 取第一行 , </li></ul><ul><li>values: </li></ul><ul><li...
同期比 ( 交叉报表中 )       合计   = 销售 .sum()- 销售 {PRE. 年 }.sum()   = 地区表 . 客户 = 地区表 . 地区 合计 比上年增长 = 季 = 年  
字段类型 <ul><li>节点字段 </li></ul><ul><li>当前节点引用 </li></ul><ul><li>=${.}.sales </li></ul><ul><li>=sales </li></ul><ul><li>引用 </l...
两类特殊变量 (ValueAlways,ValueIfClosed) 节点变量(NodeVariable) 在任何时候,不管是否收尾都返回value() 要取得节点变量本身,须调用NameSpace.getLocalVariable(Strin...
索引字段的引用路线
占比 ( 普通列表中 ) = 销售额 / 销售额 .sum() = 销售额 = 年度 与去年增加 销售额 年
占比 ( 交叉报表中 )       合计   = 销售 .sum()/ 销售 { 年 }.sum()   = 地区表 . 客户 = 地区表 . 地区 合计 占全年比 = 季 = 年  
Table 对象 1. table布局只在 paint()时发生 2. table children 布局 由 gridLayout 进行布局 3. table list中的list,由顶层对象布局,借助cell信息 Component[] c...
PowerTable 对象 1. table布局只在 paint()时发生 2. table children 布局 由 gridLayout 进行布局 3. table list中的list,由顶层对象布局,借助cell信息 Componen...
Field解析流程
ReportPrinter.print流程
 
- - ColumnPanel - - RowPanel TableView TableLayout Table CompoundView FreeLayout Panel PageView PageLayout Page View 布局 组件名称
单元格变宽处理 size-mode: fixed | auto auto: 自动可包含内容的最小宽度 fixed: 固定,超出部分截掉 表格打印中,auto组件,将判断实际高度,使其满足其最小需要 fixed组件,则按实际行高列宽分配 对于跨行...
单元格分页处理 size-mode: fixed | auto auto: 自动可包含内容的最小宽度 fixed: 固定,超出部分截掉 表格打印中,auto组件,将判断实际高度,使其满足其最小需要 fixed组件,则按实际行高列宽分配 对于跨行...
杰表2008功能列表 2. 静态表格,类似excel,支持excel行列引用及计算,支持自定义行列索引 3.支持jdbc,bean,csv数据源 4.支持外部xml数据源 5.支持多层不平衡交叉表 6.支持套打 7.支持超链接,文本,图片,统计...
杰表2008工作单 1. 功能完善 2. 文档(使用说明,flash使用说明,flash白皮书,功能对比) 3. 广告 4. 招聘,招代理 $model.sort_asc(“/root/demos/Row”,”姓名”); $model.sort...
Prochain SlideShare
Chargement dans…5
×

杰表.2008布局模型设计

416 vues

Publié le

杰表.2008设计文档

  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

杰表.2008布局模型设计

  1. 1. 杰表 .2008 布局模型设计 杭州杰创软件拥有版权 .www.jatools.com
  2. 2. 组件 @ 合计 @ 金额 @ 单价 @ 数量 @ 产品 @ 客户号 @ 类别号 @ 总序号   合计 金额 单价 数量 产品 客户号 类别号 总序号           数据库 4 11 13 oracle       台式机 4 9 12         笔记本 4 8 11 ibm       电脑配件 3 10 10       台式机 3 9 9         笔记本 3 8 8 ms 国外客户       面包 2 7 7       花生 2 6 6         巧克力 2 5 5 家乐福       牛奶 1 4 4       棕子 1 3 3       黄酒 1 2 2         色拉油 1 1 1 乐购 国内客户 合计 金额 单价 数量 产品 客户号 类别号 总序号  
  3. 3. 简单列表   总计                           总分 姓名 学号   总计   @ 总分 @ 姓名 @ 学号 总分 姓名 学号
  4. 4. 分组报表   总计       合计                   高二   合计             高一 总分 姓名 学号 班级   总计       合计       @ 班级 总分 姓名 学号 班级
  5. 5. 双表连接                                               * 金额 单价 备件数量 备件名称 备件号 序号 索赔备件                                   *       工时名称 工时代码 序号 索赔维修项           * 金额 单价 备件数量 备件名称 备件号 序号 索赔备件           *       工时名称 工时代码 序号 索赔维修项
  6. 6. 固定格式表 0.00 0.00   0.00 0.00 五、净利润 028       减:其他 027       加:其他 026       减:所得税 025   0.00 0.00 四、利润总额 024       加:以前年度损益调整 023       其他 022       减:营业外支出 021       其他 020       营业外收入 019       补贴收入 018       加:投资收益 017   0.00 0.00 三、营业利润 016       其他 015       财务费用 014       减:管理费用 013       加:其他业务利润 012   0.00 0.00 二、销售利润 011       减:其他 010       加:其他 009       销售税金及附加 008       销售费用 007       减:销售成本 006   0.00 0.00 销售收入净额 005       减:销售折扣与折让 004       一、销售收入 003 键 ( 虚拟列 ) 本年累计数 本月数 002   001 本年累计数 本月数 科目 行次
  7. 7. 交叉报表                 欧洲                  北美                  东南亚                  小计                 台湾                 澳门                 香港                 大陆 大中华区 小计 电脑配件 笔记本 台式机 小计 2006 2005   按类别 应收款 年份   1 4 1 3 1 2 4 1 3 1 2 1 1 1 小区 大区                                                         小区 大区 2006 2005                                           小区 大区 应收款                                                                       小区 大区 电脑配件 笔记本 台式机               小计   @ 电脑配件 @ 笔记本 @ 台式机 @ 应收款   @ 销售额 @ 小区 @ 大区 小计 电脑配件 笔记本 台式机 小计 @ 年份->   按类别 应收款 年份  
  8. 8. 布局诀 <ul><li>见到横表,从表模板扩展 </li></ul><ul><li>见到主表,连接从数据集成合集, </li></ul><ul><li>打印主表,从表 </li></ul><ul><li>表布局 </li></ul><ul><li>一个List总是与一个节点或节点集合关联 </li></ul><ul><li>如果这个节点是数据集节点,则总是与若干行数据相关 </li></ul><ul><li>数据集节点,数据集主节点,组节点,行节点 </li></ul>
  9. 9. 从表数据集扩展 <ul><li>年份列横转 , 且列数不定 , 产品列保持 </li></ul><ul><li>右下角 , 黄色部分为交叉数据区 , 每单元可能包含不止一个数据 , 如既可以统计合计 , 又同时计算平均值 </li></ul>3 冰箱 1994 4 冰箱 1994 3 冰箱 1993 2 洗衣机 1992 1 洗衣机 1991 1 冰箱 1991 1 电视机 1991 销售额 产品 年     2 1 洗衣机 7 3   1 冰箱       1 电视机 1994 1993 1992 1991 产品
  10. 10. 从表数据集扩展 ( 多级 ) <ul><li>年 , 季列横转 </li></ul><ul><li>红色列 , 列名是一个特殊 , 二维键 </li></ul><ul><li>新列 = 年 / 季 +sum( 销售额 ) </li></ul>... ... ... ... 1 洗衣机   1991 1 冰箱 1 1991 1 电视机 1 1991 销售额 产品 季度 年   2 1     2 1 洗衣机 7   1 7 3   1 冰箱     1       1 电视机 1992/* 1992/2 1992/1 1991/* 1991/3 1991/2 1991/1 产品
  11. 11. 直连 <ul><li>A 为主数据集 ,B,C 为从数据集 ,D 为合集 </li></ul><ul><li>合表记录数及顺序与主数据集一致 </li></ul><ul><li>对主数据集有 , 从数据集没有的行 , 合集中空行补足 , 如 D 数据集中黄色部分 </li></ul><ul><li>从数据集有 , 主数据集没有的行 , 合集中删除该行 , 如 ,C 中的红色行 </li></ul>A B C D 100 电脑 20 洗衣机 60 冰箱 100 电视机 库存数 产品     2 1 洗衣机 7 3   1 冰箱       1 电视机 1994 1993 1992 1991 产品 40 空调 20 洗衣机 60 冰箱 100 电视机 应收款 产品         2 1 洗衣机 40 空调 20 洗衣机           20 洗衣机 60 冰箱 7 3   1 冰箱 60 冰箱 100 电视机       1 电视机 100 电视机 库存数 产品 1994 1993 1992 1991 产品 应收款 产品
  12. 12. 合集中的列 <ul><li>静态列 </li></ul><ul><li>=name // 静态列的引用 </li></ul><ul><li>动态列 </li></ul><ul><li>=sales{year,quauter} </li></ul><ul><li>动态列组 </li></ul><ul><li>=sales{year}.sum() </li></ul><ul><li>=sales{1991}.sum() // </li></ul>
  13. 13. 简单布局 <ul><li>数据合集 D 由三部分组成 .a,b,c </li></ul><ul><li>设计时 , 设计三个表 , 分别绑定合集中的 a,b,c 三个数据集 </li></ul>1. 数据合集 (D) a b c 2. 设计时布局 3. 预览效果 = 库存数 = 销售额 = 应收款 = 产品 库存数 = 年份 -> 应收款 产品       2 1 40 空调 20         20 洗衣机 60 7 3   1 60 冰箱 100       1 100 电视机 库存数 1994 1993 1992 1991 应收款 产品         2 1 洗衣机 40 空调 20 洗衣机           20 洗衣机 60 冰箱 7 3   1 冰箱 60 冰箱 100 电视机       1 电视机 100 电视机 库存数 产品 1994 1993 1992 1991 产品 应收款 产品
  14. 14. 主表布局 <ul><li>主表每打印完一行 , 打印从表行 </li></ul><ul><li>从表行当前数据 , 取决于主键位置 </li></ul>空调 40 空调 洗衣机 20 洗衣机 冰箱 60 冰箱 电视机 100 电视机 null 应收款 产品 主键   20 60 100 库存数 = 库存数 = 应收款 = 产品 库存数 应收款 产品
  15. 15. 堆叠交叉 销售额(地区,客户,年,季) 销售额(地区,客户,年,*) 销售额(地区,*,年,季) 销售额(地区,*,年,*) 销售额(产品,年,季) 销售额(产品,年,*) = 销售额 = 销售额 产品 = 销售额 = 销售额 合计 = 销售额 = 销售额 = 客户 = 地区 合计 = 季度 = 年度
  16. 16. 合集数据引用 <ul><li>主表每打印完一行 , 打印从表行 </li></ul><ul><li>从表行当前数据 , 取决于主键位置 </li></ul>      合计       = 客户 = 地区 合计 = 季 应收款 = 年                   * *       * 华北                 * 华东                 天津 华北                 北京 华北                 南京 华东                 杭州 华东                   上海 华东 应收款 * * * 2 1 3 2 1 客户 地区   * 1992 1991 1992 1992 1991 1991 1991    
  17. 17. 合集数据引用 ( 一 ) 规则一:是先定位列 , 后定位行 =销售{年,季}{地区,客户} =应收款 {地区,客户} 列定位 行定位 列定位 行定位 静态列时定位 动态列时定位 = 应收款 { 地区 , 客户 }.sum() = 销售 { 年 , 季 }{ 地区 , 客户 }.sum() = 销售 { 年 , 季 }{ 地区 , 客户 }.sum() 合计 = 应收款 { 地区 , 客户 } = 销售 { 年 , 季 }{ 地区 , 客户 }.sum() = 销售 { 年 , 季 }{ 地区 , 客户 } = 客户 = 地区 合计 = 季 应收款 = 年  
  18. 18. 合集数据引用 ( 二 ) 规则二:行或列满键时,可以省去 =销售 // 等价,列键,行键均满 =应收款.sum() // 等价 = 应收款 { 地区 , 客户 }.sum() = 销售 { 年 , 季 }{ 地区 , 客户 }.sum() = 销售 { 年 , 季 }{ 地区 , 客户 }.sum() 合计 = 应收款 { 地区 , 客户 } = 销售 { 年 , 季 }{ 地区 , 客户 }.sum() = 销售 { 年 , 季 }{ 地区 , 客户 } = 客户 = 地区 合计 = 季 应收款 = 年  
  19. 19. 合集数据引用 ( 三 ) 规则二:引用上级,可特指行列键 =销售 / 销售{年}{地区,客户} // 等价,意即本季与本年合计所占比重 = 应收款 .sum() = 销售 .sum() = 销售 .sum() 合计 = 应收款 = 销售 .sum() = 销售 / 销售 { 年 } = 客户 = 地区 合计 = 季 应收款 = 年  
  20. 20. 合集数据引用 ( 四 ) this =销售{年,*} <=> =销售{年} =销售{NEXT.年,*} <=> =销售{NEXT.年} =销售{*,*} <=> =销售{*} =销售{PREV.年,*} <=> =销售{PREV.年} =销售{年,PREV.季} =销售{年,NEXT.季} =销售{PREV.年,季} // 去年同期 =销售{NEXT.年,季} // 下年同季 * * * 1994 * 1993 * 1992 2 1994 1 1994 4 1993 3 1993 2 1993 1 1993 3 1992 2 1992 1 1992
  21. 21. 合集上下文 合集数据列, 数据列,动态树 销售,应收款,应付款 行组树
  22. 22. 合集上下文 = 年 季 应收款余额 <=> = 应收款余额 = 年 应收款余额 <=> = 年 应收款余额 =* 应收款余额 = 年 地区 城市 销售 = 年 地区 销售 =* 销售 = 销售
  23. 23. 合集上下文 灌入变量 : 年度 [.=1991] 季度 .sum() 季度 应收款余额 地区 城市 销售
  24. 24. 合集上下文 有游标的情况下 , 年度 =1991, 季度 =1 @ 销售额 季度 @ 销售额 年度 季度 @ 销售额 上述等价 年度 [.=1991] 季度 [1]@ 销售额 年度 [postion()-1] 销售额 .sum() 上一年度销售额总计 年度 [postion()-1] 季度 [.=ANY]@ 销售额 .sum() 等价 年度[postion()-1]季度[.=@季度]@销售额.sum() 去年同季销售额 年度 [postion()-1] 季度 [][.=] 季度 @ 销售额 1991 年 1 季度销售额 年度 销售额 .sum() 1991 的销售额总计
  25. 25. 合集上下文 销售表 . 应收款余额 { 华北 城市 }{ 年 季 }
  26. 26. 合集数据引用公式 =销售{年,月}{地区,客户} // 等价 =应收款{地区,客户} // 等价 =销售{年,月}{地区,客户}.sum() // 等价 以下二个公式等价 =销售{年}{地区,客户}.sum() =销售{年}.sum() = 应收款 .sum() = 销售 .sum() = 销售 .sum() 合计 = 应收款 = 销售 .sum() = 销售 = 客户 = 地区 合计 = 季 应收款 = 年  
  27. 27. 从表模板扩展 A 表A打印后,模板被横向扩展 规则: 同列,同宽的表被扩展 = 销售额 = 销售额 = 销售额 = 销售额 = 销售额 = 销售额 = 销售额 = 销售额 = 销售额 产品 = 销售额 = 销售额 = 销售额 = 销售额 = 销售额 = 销售额 = 销售额 = 销售额 = 销售额 合计 = 销售额 = 销售额 = 销售额 = 销售额 = 销售额 = 销售额 = 销售额 = 销售额 = 销售额 = 客户 = 地区 合计 四季度 三季度 二季度 一季度 合计 四季度 二季度 一季度 2000 2000 = 销售额 = 销售额 产品 = 销售额 = 销售额 合计 = 销售额 = 销售额 = 客户 = 地区 合计 = 季度 = 年度
  28. 28. 纵向扩展 ( 打印扩展 ) A 表B随表A向下打印 规则: 同行,同高的表被打印 打印扩展不扩展模板 B = 销售额 = 销售额 产品 = 销售额 = 销售额 合计 = 销售额 = 销售额 = 客户 = 地区 合计 = 季度 = 年度 6 1 2   3 8 2   6 合计 1       1 3     3 杭州华信科技 1 1       2     2 南京巨人系统公司 4   2   2 3 2   1 上海光明软件公司 华东 合计 四季度 三季度 二季度 一季度 合计 四季度 二季度 一季度 2000 2000
  29. 29. 超级 cell 打印流程 <ul><li>2. 行打印流程 </li></ul>1. 表格打印流程
  30. 31. <ul><li>Dataset ds = null; </li></ul><ul><li>ds.group( 地区 , 城市 ); </li></ul><ul><li>Dataset sales = getSales(); </li></ul><ul><li>ds.join(sales,new String[]{“ 地区” ,” 城市” }); </li></ul><ul><li>Node dsn = new DatasetNode(ds,” 销售额” ); </li></ul><ul><li>地区 [.=“ 华东” ] 销售额 .sum()) </li></ul>
  31. 32. 同期比 ( 普通列表中 ) 报表数据/年度销售表 Row 38 160 1994 2 122 1993 20 120 1992 - 100 1991 与去年增加 销售额 年 160 1994 122 1993 120 1992 100 1991 销售额 年 =PRE. 销售额 - 销售额 = 销售额 = 年度 与去年增加 销售额 年
  32. 33. 字段类型 <ul><li>节点字段 </li></ul><ul><li>value: 如果是行节点 , 取行 row, 取得值 , 否则 , 取第一行 , </li></ul><ul><li>values: </li></ul><ul><li>=sales 按节点所在第一列取值 </li></ul><ul><li>=sales.sum() 按节点起始行 , 取合计值 </li></ul><ul><li>=PRE.sales 取前兄弟节点 , 第一行取值 </li></ul><ul><li>=PRE.sales.sum() 取前兄弟节点 , 取合计 </li></ul><ul><li>=${.}.sales.sum() </li></ul><ul><li>索引字段 </li></ul><ul><li>必须是索引数据集 </li></ul><ul><li>=sales 按 sales{rowkeys} 第一行取值 </li></ul><ul><li>=sales .sum() 按 sales{rowkeys}, 即合计值 </li></ul><ul><li>=sales{rowkeys} 按 sales{rowkeys} 取合计值 </li></ul><ul><li>交叉字段 </li></ul><ul><li>必须是交叉数据集 </li></ul><ul><li>=sales 按 sales{colkeys}{rowkeys} 第一行取值 </li></ul><ul><li>=sales{colkeys}{rowkeys} 取第一行值 </li></ul><ul><li>=sales.sum() </li></ul><ul><li>=sales{colkeys}.sum() </li></ul>
  33. 34. 同期比 ( 交叉报表中 )       合计   = 销售 .sum()- 销售 {PRE. 年 }.sum()   = 地区表 . 客户 = 地区表 . 地区 合计 比上年增长 = 季 = 年  
  34. 35. 字段类型 <ul><li>节点字段 </li></ul><ul><li>当前节点引用 </li></ul><ul><li>=${.}.sales </li></ul><ul><li>=sales </li></ul><ul><li>引用 </li></ul><ul><li>value: 如果是行节点 , 取行 row, 取得值 , 否则 , 取第一行 , </li></ul><ul><li>values: </li></ul><ul><li>=sales 按节点所在第一列取值 </li></ul><ul><li>=sales.sum() 按节点起始行 , 取合计值 </li></ul><ul><li>=PRE.sales 取前兄弟节点 , 第一行取值 </li></ul><ul><li>=PRE.sales.sum() 取前兄弟节点 , 取合计 </li></ul><ul><li>=${.}.sales.sum() </li></ul>= 国家表 .area.sum() =area
  35. 36. 两类特殊变量 (ValueAlways,ValueIfClosed) 节点变量(NodeVariable) 在任何时候,不管是否收尾都返回value() 要取得节点变量本身,须调用NameSpace.getLocalVariable(String) 节点字段(NodeField) 只有在收尾时,返回为value(),在其他时候,返回本身 节点变量,实现 ValueAnyway 表示在任何时候,都返回value() 节点字段,实现 ValueIfClosed 表示在收尾时,才返回取值
  36. 37. 索引字段的引用路线
  37. 38. 占比 ( 普通列表中 ) = 销售额 / 销售额 .sum() = 销售额 = 年度 与去年增加 销售额 年
  38. 39. 占比 ( 交叉报表中 )       合计   = 销售 .sum()/ 销售 { 年 }.sum()   = 地区表 . 客户 = 地区表 . 地区 合计 占全年比 = 季 = 年  
  39. 40. Table 对象 1. table布局只在 paint()时发生 2. table children 布局 由 gridLayout 进行布局 3. table list中的list,由顶层对象布局,借助cell信息 Component[] cellstore Component[] liststore Vector getChildren() √ √ √ √ 深层列表 √ √ 插入列 √ √ 插入列 √ √ 删除行 √ √ 插入行 √ 撤销合并单元格 √ 合并单元格 顶层列表 单元格对象 操作
  40. 41. PowerTable 对象 1. table布局只在 paint()时发生 2. table children 布局 由 gridLayout 进行布局 3. table list中的list,由顶层对象布局,借助cell信息 Component[] cellstore Component[] liststore Vector getChildren() √ √ √ √ 深层列表 √ √ 插入列 √ √ 插入列 √ √ 删除行 √ √ 插入行 √ 撤销合并单元格 √ 合并单元格 顶层列表 单元格对象 操作
  41. 42. Field解析流程
  42. 43. ReportPrinter.print流程
  43. 45. - - ColumnPanel - - RowPanel TableView TableLayout Table CompoundView FreeLayout Panel PageView PageLayout Page View 布局 组件名称
  44. 46. 单元格变宽处理 size-mode: fixed | auto auto: 自动可包含内容的最小宽度 fixed: 固定,超出部分截掉 表格打印中,auto组件,将判断实际高度,使其满足其最小需要 fixed组件,则按实际行高列宽分配 对于跨行单元格超出部分,按算法给出
  45. 47. 单元格分页处理 size-mode: fixed | auto auto: 自动可包含内容的最小宽度 fixed: 固定,超出部分截掉 表格打印中,auto组件,将判断实际高度,使其满足其最小需要 fixed组件,则按实际行高列宽分配 对于跨行单元格超出部分,按算法给出
  46. 48. 杰表2008功能列表 2. 静态表格,类似excel,支持excel行列引用及计算,支持自定义行列索引 3.支持jdbc,bean,csv数据源 4.支持外部xml数据源 5.支持多层不平衡交叉表 6.支持套打 7.支持超链接,文本,图片,统计图 8.支持tooltip,对文本,图片,统计图 9.支持表格固定行列标题 10.支持表格分组缩放, 11.支持统计图,flash,gif,png,等输出格式 12.支持参数查询表单生成,支持文本,日期,下拉,列表,等 13.支持填报,使用插件方式
  47. 49. 杰表2008工作单 1. 功能完善 2. 文档(使用说明,flash使用说明,flash白皮书,功能对比) 3. 广告 4. 招聘,招代理 $model.sort_asc(“/root/demos/Row”,”姓名”); $model.sort_desc(“/root/demos/Row,”姓名.sum()”); =!{/root/demos/Row}.sort_asc(“姓名”); =!{/root/demos/地区}.sort_desc(“销售额.sum()”);

×