注册 登录
qy88千亿国际专家网 返回首页

向中燕的个人空间 http://zjw.zlsoft.com/?20968 [收藏] [复制] [RSS]

日志

新交叉表部件简介

热度 1已有 2383 次阅读2011-10-25 19:04 |系统分类:技术研究|
一、       概述        交叉表是一种常见的二维分析报表,在智能窗体上可以使用交叉表部件把业务表数据转换为交叉表的形式,同时还支持数据录入、编辑功能。以下2个构建案例演示了新交叉表部件的基本应用。 二、案例1:生成交叉表 交叉表1 1.     场景描述        交叉表1是对某医院医生收入情况的汇总分析。表结构如下:        列字段:收费项目        行字段:部门、姓名        数据字段:金额(求和汇总)        交叉表顶部是列区域,左侧为行区域,由字段标题和字段值组成。交叉表中间数据区域的单元格是对“金额”的汇总。例如交叉表1的焦点单元格“200.00”表示内科医生“PZM” 心电图总计收入200.00元人民币。金额超过1000的单元格显示红色,小于100的显示蓝色。        交叉表右侧的总计列汇总了各医生所有收费项目的收入;底部的总计行汇总了每个项目的总收入。交叉表中间还有以部门为统计单位的小计行。        白色的单元格是汇总单元格,黄色区域的单元格为小计单元格、总计单元格。 2.     构建步骤 1) 创建逻辑表 Ø  人员信息表 Ø  收费项目表 Ø  收入明细表 2) 为“收入明细”逻辑表创建业务数据表“收入明细_只读”,业务表的参考SQL SELECT ryxx.bm,        ryxx.xm,        sfxm.sfxm,        srmx.je FROM   srmx        JOIN ryxx          ON srmx.kdr = ryxx.id        JOIN sfxm          ON sfxm.id = srmx.sfxm SQL生成的表字段: 3) 新建智能窗体“科室收入”并进入设计模式,然后从部件列表拖入“交叉表部件2”。 4) 设置部件“数据源”属性,选择第2步创建的“收入明细_只读”业务表作为数据源。 5) 设置交叉表字段区域        点击部件属性“字段特性”,进入字段特性设置界面(参见上图),左侧列表框显示了交叉表各区域的字段。前面4个区域在交叉表内部,“自定义窗口、隐藏” 区域在交叉表外部。初始时所有字段都位于自定义窗口区域。        在字段列表上点击右键弹出上下文菜单,把各个字段配置到交叉表的行、列、数据区域(参见下图)。同一区域有多个字段时,点击“上、下”箭头按钮调整其排列顺序,此处的上下顺序对应于字段在交叉表上的排列位置。设置完成后,点击“确定”按钮。        通过自定义窗口也能够设置字段区域:退出窗体设计,在部件左上角点击右键,选择弹出菜单中 的“显示数据栏清单”菜单项。从弹出的自定义窗口把字段拖拽到交叉表相应区域。 6) 样式条件 在“字段特性”左侧列表选中“金额”字段,然后点击右侧的“样式条件”面板。点击样式条件列表底部的“+”按钮新增。(参见下图) 样式条件1:大于等于1000的单元格显示红色字体 样式条件2:等于空值的单元格显示黑色字体。 样式条件3:小于100的单元格显示蓝色字体。 一个单元格符合多个样式条件时,最前面的那个样式条件有效。 作用于空单元格的样式条件2,是为了避免“小于100”的样式条件3应用到空单元格上。因为如果单元格的值为空,那么条件“小于n”(n大于等于0)是成立的。 7) 保存设计信息,进入设计时界面,即可看到部件生成的交叉报表。   三、案例2:编辑交叉表 交叉表2:专家排班表 1.     场景描述        交叉表2显示了各部门医生一周的排班信息,在空单元格输入值将新增一条排班记录,或者修改单元格值以更新数据源中的排班记录。按“Delete”键可以删除单元格的值,但部件不支持删除记录的操作。 2.     构建步骤 1)     创建逻辑表  专家排班表: 2)     为逻辑表创建一个读写业务表,名称为“专家排班表_读写”: 3)     创建智能窗体“专家排班信息”,并且添加一个交叉表部件,然后把数据源设置为“专家排班表_读写”。 4)     按照案例1的方法设置字段区域: 行区域:专家ID_部门、专家ID 列区域:星期 数据区域:排班 隐藏:专家ID_姓名 行区域使用了数据字段“专家ID”而不是其附加显示字段“专家ID_姓名”,因为行区域如果全部都是附加字段而没有主数据字段时,通过空单元格新增记录的操作就无法给“专家ID”字段赋值。 5)     打开字段特性窗体,设置“专家ID、星期”的预定义字段值 “专家ID”预定义字段值 “星期”预定义字段值 行区域附加字段“专家ID_部门”根据其主字段自动取值,不需要设置。 6)     通过“字段特性 –> 显示标题”把“专家ID_部门”显示名称改为“部门”,把“专家ID”改为“专家”,然后点击“确定”退出字段特性编辑窗体。 7)     设置部件属性
属性名称 属性值
显示过滤字段标题 false
显示小计行 false
显示小计列 false
显示总计行 false
显示总计列 false
显示字段标题菜单 fasle
允许拖拽 false
显示折叠按钮 false
8)     新增智能操作,在操作中添加内部过程“保存数据”并且关联到交叉表部件。 9)     保存设计信息,退出设计模式。 在数据单元格输入值,然后保存即可新增排班记录。编辑模式的交叉表部件通常应锁定字段(“允许拖拽”==false),禁止用户拖拽字段位置。 四、功能特点 1.     交叉表的编辑条件        交叉表的数据单元格是否允许编辑受以下因素的控制: 1)    小计、总计单元格只读,只有汇总单元格允许编辑。 2)    汇总了2条及以上记录的单元格不可编辑。 3)    “计数”汇总类型的单元格不可编辑。 4)    焦点单元格对应的行列字段值折叠时禁止编辑。 5)    关联查找类型的数据字段在附加显示字段上编辑,其它附加字段只读。 除了以上条件,还受到部件、字段的只读属性、数据策略等因素影响。 按下快捷键“Ctl + D”,可在客户端日志中快速查看焦点单元格只读的原因。 2.     预定义字段值        交叉表行列区域的字段值默认情况下是根据部件数据源中的记录生成的。案例2专家排班表的数据源还没有记录,要在没有记录的情况下生成空交叉表,就需要提前设置好字段值。        根据不同的业务类型,字段值来源于选项设置、关联查找的目标表、或其它业务表。附加字段的值根据主数据字段自动生成,不需要设置。        同一区域有多个字段时(附加字段除外),将生成字段值的完全组合。例如行区域有字段AB,设置的字段值分别为{ab}{12},那么行区域每行的字段值为{a1);(a2);(b1);(b2}。如果多个字段的值来源于相同业务表,那么将直接从这个业务表获取组合的字段值。 3.     零宽度字段        交叉表的行字段宽度可以设置为0,零宽度的行字段不可见,但仍然在行区域。例如下面这个考试成绩表显示了学员2次考试的成绩: 把“考试次数”字段的宽度设为零:(注意取消宽度自适应,否则设置的绝对宽度无效。) 上面这个交叉表可见的行字段只有“姓名”,但仍然分别显示了每次考试的分数,表明交叉表实际上是按照2个行字段生成的。零宽度的行字段可用于生成这种特殊显示样式的交叉表。 4.     数据源优化 对案例1的“收入明细_只读”业务表SQL做如下修改: SELECT   ryxx.bm,          ryxx.xm,          sfxm.sfxm,          SUM(srmx.je)  AS 金额 FROM     srmx          JOIN ryxx            ON srmx.kdr = ryxx.id          JOIN sfxm            ON sfxm.id = srmx.sfxm GROUP BY ryxx.bm,ryxx.xm,sfxm.sfxm 修改后的业务表从数据库查询的是对金额字段进行分类汇总后的数据。这样不仅减少了传输的数据量,并且减少了交叉表部件在客户端要计算的数据,生成交叉表的效率更高。 5.     支持的内部过程
内部过程名称 说明
保存数据 读写业务表编辑完成后,通过此过程将变化的记录提交到服务器。
刷新内容 从服务器重新加载数据,或对部件数据源进行本地过滤。
部件只读设置 对可编辑的交叉表部件,动态切换只读状态。
打印SP 实现打印、及打印预览功能。
输出文件 支持导出Excel文件,不支持输出Word文件。
6.     不支持的功能 Ø  不支持通过表达式环境获取焦点记录的字段值。应使用部件功能“获取字段值”输出焦点单元格对应的字段值。 Ø  本版本不支持行高度设置、及数据单元格显示多行文本。  

路过

鸡蛋

鲜花
1

握手

雷人

发表评论 评论 (2 个评论)

回复 谭艺强 2011-10-31 11:55
SQL语句尽量按ORACLE的习惯来写,而不是按SQL SERVER的习惯。
还有就是提供了哪些事件呢?如焦点获取、双击、值变化等。
对单元格的字体和背景属性提供了控制功能吗?
小计和合计行可以控制放在组的开始和结束吗?
回复 向中燕 2011-11-23 00:42
谭艺强: SQL语句尽量按ORACLE的习惯来写,而不是按SQL SERVER的习惯。
还有就是提供了哪些事件呢?如焦点获取、双击、值变化等。
对单元格的字体和背景属性提供了控制功能 ...
1、有焦点单元格变化、单元格值变化、双击事件
2、样式条件可控制数据单元格显示样式
3、目前只能放在后面
facelist
您需要登录后才可以评论 登录 | 注册
手机版|小黑屋|ZLSOFT Inc. ( 渝ICP备12005023号 GMT+8, 2019-3-23 02:10 , Processed in 0.366383 second(s), 23 queries .
Powered by Discuz! X3.2 © 2001-2013 Comsenz Inc.
返回顶部