NC5自定义查询用户手册_第1页
NC5自定义查询用户手册_第2页
NC5自定义查询用户手册_第3页
NC5自定义查询用户手册_第4页
NC5自定义查询用户手册_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、由于查询需求的多样性,SQL语句,因此需要提供KV1011002200330表AKV2011000330005500表B在数据库应用系统中, 数据查询始终是应用的基础和核心。 从数据库中获取用户所需的业务数据,按照用户预定义的格 给用户进行浏览、分析、统计、打印及转换,还可作进一步的处理。不可能穷举所有的用户查询,当然也不能要求普通用户去直接拼写 一个工具让用户可以自己进行查询的设计和定制。查询引擎查询引擎是面向高级实施人员和专业开发人员的查询建模工具,可以全面支持复杂查询的设计和个性化的报表展现。查询引擎由两个功能点组成:查询引擎管理和查询引擎权限控制。查询引擎基本概念及案例基本概念数据表、

2、临时表、报表:数据表是数据库里物理存在的表;报表是符合用户要求的一个界面展现,它通常是一个二维的数据表格;有时我们仅仅通过数据表无法直接查出报表要求的数据结果,这时可能需要通过数据表查询建立一些具有过渡性质的中间表,然后再通过这些中间表查出最终结果,这种起到过渡作用的表称为临时表。数据字典: 数据字典提供数据库对象的逻辑属性,有助于提高查询定义的直观性和易用性。内连接与外连接:这是多表查询中的不同连接方式,其中外连接主要包括左连接(left out join )和右连接(right out join)两种。左连接取出左侧关系中所有与右侧关系的任一元组都不匹配的元组,用空值填充所有来自右侧关系的

3、属性,再把产生的元组加到内连接的结果上。右连接与左连接完全对称,“表A左连接表B”与“表B右连接表A”的效果是一样的。以下述的表A和表B为例,它们以字段 K作为键值进行不同连接后会得到不同结果集。内连接(select , , , from A inner join B on =) 的结果是:011001100033003300左连接(select , , from A left join B on =)的结果是:0110011000220033003300右连接(select , , from A right join B on =)的结果是:01100110003300330005500普通

4、查询(简单查询)与复合查询:复合查询和普通查询的关系如图所示。两者的查询结果都可以看成是临时表,其差别在于: 普通查询是基于数据表定义查询,复合查询是基于已经定义好的查询来定义查询。参数定义:通常用于查询定义中 SQL向导设计工具中的 where条件表达式中,存在字符型和数值型(浏 览时可直接录入)、字符枚举和数值枚举型参数 (浏览时可下拉框录入),参照型参数(浏览 时可参照录入)等穿透:当明细表与汇总表一起出现时,某种内在联系可从汇总数据联查明细数据,称穿透或钻取分级汇总:按分级列(具有一定级次的编码规则),对汇总列(数值型)进行各级汇总,并在各级末尾添加分级汇总列。交叉:按一定交叉规则进行

5、旋转交叉或投影交叉1)旋转交叉:行列不固定存在一定交叉规则(指定交叉行、交叉列、交叉值字段)之后,报表全动态地实现数据交叉。 常用多层列表头辅助体现交叉的维度,且交叉规则能够在运行态重新设定。适用于无法预先确定交叉后列结构的报表;2) 投影类交叉:行列固定;每行、每列均对应一个筛选条件,而单元格第i行第j列的内 容根据SQL语句select统计函数(字段)from 表where (行条件i) and (列条件j) ”查出,且是个唯一的值交叉砝码: 交叉设置界面中的交叉砝码的作用是, 描述交叉值字段对应的列出现在交叉列展开后的哪个 层次上。退化:在投影交叉查询中的筛选条件中设置为退化的项; 用于

6、在运行态 (浏览态) 进行再次投影交 叉时, 其结果集中需显示的备用行或备用列。 在第一次投影交叉查询结果中, 退化项则既不 出现在行头上,也不出现在列头上。行间占比:行间占比: 指先按分组排序列进行分组排序, 然后计算单元格与其所在分组小计值的比, 或 者为单元格与其所在列总合计值的比列间占比: 列间占比:指比例 =本列数值 / 多列总和合并查询:报表部分区域由查询结果填充、部分区域由手工填入,此类报表可通过“合并查询”模 式完成。典型报表案例:报表是由数据和格式组成的整体。报表中的取数规则离不开 SELECT查询语句查询模型中的核心功能“ SQL向导设计”实际是 SELECT查询语句的可视

7、化工具。 如汇总表中的SELECT查询语句:SELECT年度,公司编码,公司名称,科目,sum(借方发生额),sum(贷方发生额)FROM凭证表INNER JOIN凭证分录表 ON凭证表.凭证主键=凭证分录表.凭证主键INNER JOIN公司目录表ON凭证表.公司编码=凭证分录表.公司主键INNER JOIN 科目表 ON 凭证分录表 . 科目主键 =科目表 . 科目主键WHERE公司=corpGROUPB年度,公司编码,公司名称,科目ORDERBY年度,公司编码,公司名称 ASC以下“ SQL向导设计”工具(如下图)中:“连接表”页签对应 FROM.部分“连接条件”页签对应 INNER JO

8、IN.ON部分“连接字段”页签对应SELECT部分“筛选条件”页签对应 WHERE部分“排序字段”页签对应ORDERBY 系统自动对不含聚合函数的字段作GROUPS理。(一)汇总表:年度公司编码公司名称科目借方发生 额贷方发生 额200101A1001100200101A2001100200202B1002200200202B2002200200303C1003700200303C2003700用sql语言表示:SELECT年度,公司编码,公司名称,科目,sum(借方发生额),sum(贷方发生额)FROM凭证表,凭证分录表,公司目录表,科目表INNER IN.ON GROUPB年度,公司编码,

9、公司名称,科目ORDERBY年度,公司编码,公司名称(可通过“ SQL向导设计”功能完成。)(二)明细表:年度公司编 码公司名 称凭证号制单日期科目借方发 生额贷方发 生额200101 AP12001 /9/11001100200101A12001 /9/12001100200202B:22002/8/11002200200202B22002/8/12002200200303C32003/8/11003300200303Cp2003/8/12003300200303C42003/10/11003400200303C42003/10/12003400用sql语言表示:SELECT年度,公司编码,

10、公司名称,科目,借方发生额,贷方发生额FROM凭证表,凭证分录表,公司目录表,科目表INNER I N.ON ORDERBY年度,公司编码,公司名称(可通过“ SQL向导设计”完成。)(三)旋转交叉:如对上述的明细表进行旋转交叉(1)交叉列为1列时交叉行:凭证号、科目交叉列:年度交叉值:借方发生额交叉砝码(借方发生额):在列头的第2层 复合维度:为Y时、年度凭证号、科目200120022003借方发生额借方发生额借方发生额110011002100220031003300120012200232003交叉行:凭证号、科目交叉列:年度交叉值:借方发生额交叉砝码(借方发生额):在列头的第1层借方发借

11、方发借方发年度生额生额生额200120022003凭证号、科目110011002100220031003300120012200232003(2)交叉列为多列时交叉行:凭证号、科目交叉列:年度、公司名称交叉值:借方发生额、贷方发生额 交叉砝码(借方发生额、贷方发生额 ):在列头的第3层 列复合维度:为 Y时凭证号、科年度、 公司名称200120022003ABC借方发生额贷方发生额借方发生额贷方发生额借方发生额贷方发生额1100110012001100210022002200220031003300320033004100340042003400交叉行:凭证号、科目交叉列:年度、公司名称交叉值

12、:借方发生额、贷方发生额交叉砝码(借方发生额、贷方发生额):在列头的第3层列复合维度:为 N时 年度、公司名称凭证号、科目L200120022003ABCABCABC借 方 发 生 额贷 方 发 生 额借 方 发 生 额贷 方 发 生 额借 方 发 生 额贷 方 发 生 额借 方 发 生 额贷 方 发 生 额借 方 发 生 额贷 方 发 生 额借 方 发 生 额贷 方 发 生 额借 方 发 生 额贷 方 发 生 额借 方 发 生 额贷 方 发 生 额借 方 发 生 额贷 方 发 生 额1100110012001:1002100220022002 :20031003300320033004100

13、340042003400(可通过“ SQL向导设计”完成。)(四)投影交叉:部门姓名性别财务开发部Sbq男财务开发部sy男供应链开发部ghi女财务开发部fll女生别部门7男女财务开发部21供应链开发部2用SQL语言表示:select count( 性别)from 人事视图where部门= 财务开发部and性别= 男(可通过“ SQL向导设计”完成。)(1)对旋转交叉结果穿透:年度公司编 码公司名 称凭证号制单日期科目借方发 生额贷方发 生额200101A12001 /9/11001100200101A:12001 /9/12001100200202B22002/8/11002200200202

14、B22002/8/12002200200303C32003/8/11003300200303C32003/8/12003300200303C42003/10/11003400200303C42003/10/12003400200403C52004/4/11003500按单列(科目=1003)穿透结果:年度公司编 码公司名 称凭证号制单日期科目借方发 生额贷方发 生额200303C2003/8/11003300200303C42003/10/11003400200403C52004/4/11003500按多列(科目=1003和年度=2003)穿透结果:年度公司编 码公司名 称凭证号制单日期科目借

15、方发 生额贷方发 生额200303C32003/8/11003300200303C42003/10/11003400(可通过“ SQL向导设计”及“穿透规则”中的查询间穿透来共同完成。)(2)对投影交叉结果穿透:生别部门男女财务开发部21供应链开发部2VZ按单元格穿透:部门姓名性别财务开发部Sbq男财务开发部sy男(可通过“ SQL向导设计”及“穿透规则”中的投影交叉穿透功能来共同完成。)(六)行间占比年度公司编码公司名称凭证号制单日期科目借方发生 额借方占比200101A12001 /9/11001100200101A12001 /9/12001100200202B22002/8/11002

16、200200202B22002/8/12002200200303C32003/8/11003300200303C32003/8/12003400如按公司编码对借方发生额进行汇总:公司编码公司名称凭证号制单日期#目借方发生 额200101A12001 /9/11001100200101A12001 /9/12001100小计200200202B22002/8/11002200200202B22002/8/12002200小计400200303C32003/8/11003300200303C32003/8/12003400小计700合计1300行间占比结果:年度公司编 码公司名 称凭证号制单日期科

17、目借方 发生 额借方占比1 (借方发生 额/分组小 计)借方占比 2 (借方发 生额/合 计)200101A12001 110011000. 50. 0769200101A12001 120011000. 50. 0769200202B22002/8/110022000. 50. 1538200202b22002/8/120022000. 50. 1538200303C32003/8/110033000. 42860. 2308200303:c32003/8/120034000. 57140. 3077(可通过“ SQL向导设计”及“数据加工”中内置的分组统计、行间占比算法来共同完成。)(七)

18、列向分支统计型corpn amesexA公司韩千穗女A公司智银圣男A公司金晓光女A公司王丽娜女B公司金贤成男B公司姜希灿女通过 SELECT corp, (CASE sex WHEN 男THEN 1 ELSE 0 END) AS male,(CASE sex WHEN 女THEN 1 ELSE 0 END) AS femaleFROM T将获得如下结果:corpmalefemaleA公司01A公司10A公司01A公司01B公司10B公司01SELECT corp, SUM(CASE sex WHEN 男THEN 1 ELSE 0 END) AS male, SUM(CASE sex WHEN

19、女THEN 1 ELSE 0 END) AS female FROM TEM_CASEGROUP BY corp则将查出以下结果:corpmalefemaleA公司13B公司11(可通过“ SQL向导设计”功能来完成。)(八)合并查询(半录入半嵌入型)部门汉族满族家古族1、直属部门情况财务部人数人数人数行政部人数人数人数2、开发部门情况HR产品开发部人数人数人数HR产品市场部人数人数人数(可通过“合并查询”功能来完成,上述表格中的部分区域通过手工录入,部分区域通过嵌入查询完成)查询引擎管理操作方法在主菜单中单击客户化-自定义查询-查询管理中心的子菜单查询引擎管理 系统将弹出“查询引擎”的浏览窗

20、口。查询引擎管理包括查询/界面对象树管理、查询模型设计、界面模型设计等主要功能。查询/界面对象树管理图17-6所示的查询引擎主界面左侧为一棵对象树,树上挂有代表查询对象和界面对象的节 点,右侧为显示当前选中对象基本属性的属性框。图17-6查询引擎主界面文件夹管理:增加/删除/修改:在根节点或目录节点之下可以增加目录,删除目录时会删除 目录下的所有对象。目录的可修改属性为目录名称。同一目录下的目录和对象 不能重名。复制/剪切/粘贴:在查询子树或格式子树下,可以将一个目录及其下属内容从 某位置拷贝或移动到另一个位置。对象管理:增加/删除/修改:在根节点或目录节点之下可以增加查询对象或者界面对象。

21、前者的属性为编码、名称和数据源,后者的属性为编码和名称,其中编码一经 使用,就不再建议作任何修改,因为此编码可能被其它对象引用。复制/剪切/粘贴:在查询或格式子树下,可以将一个对象从某位置拷贝或移动 到另一个位置。导入/导出:选中某个对象,可将其导出为 XML文件,该文件可被导入到另外 的目录下。此功能可用于对象的跨数据库复制。 在导出查询对象或界面对象时, 需将其引用的查询对象一并导出才有意义。选中某目录时,导入功能可用。切换定义数据源:(当查询引擎不支持多数据源,只支持单数据源时此功能置灰)查询引擎支持多数据源运作机制模式一NC业务在数据源 A下运行,查询引擎的定义放在数据源B,通过引擎定

22、义的查询可以到数据源C去执行。图17-7切换定义数据源定义数据源(上面说的 B)是指查询引擎自身的系统表所在的数据源,执行切换功能后,主 界面上的对象树的内容会作相应改变。图17-8切换定义数据源效果修改执行数据源:当需修改执行数据源时,选择左侧查询设计下的目录,按“辅助设置”一 “批量修改执行数据源”,选择数据源下拉框数据进行保存。查询模型设计查询模型设计包括参数定义、 SQL设计(含交叉定义)、SQL整理、数据加工、穿透规则等几 部分,其中穿透规则描述的是本查询与外部查询的通信关系,其余部分都用于描述查询内部的属性。查询设计态和运行态的基本流程如下图所示:图17-9查询模型流程(1) 参数

23、控制参数是查询模型中代表动态信息的元素。在SQL设计、SQL整理和数据加工中,均可以根据参数的不同,对查询的定义和执行进行调整。如果创建某个参数的作用 是根据其取值的不同改变WHERE条件的设置,则这类参数成为过滤型参数,这是最常用的参数功能。参数定义:用于定义本查询内部引用的所有参数,其中参数名要保证互不相同。 数据类型包括自由录入、枚举、参照几种,当类型为枚举时,枚举项为用“分隔的枚举值,或者是一个单字段的查询SQL;当类型为参照时,枚举项为基础参照名,或者是用尖括号括起的自定义参照的类名。图17-10参数定义参数引用:参数可在 SQL设计的筛选条件页签引用,也可在SQL整理或数据加工的嵌

24、入代码中利用编码向导引用。图17-11参数引用参数设置:运行态要求用户首先对参数进行设置,这与查询模板的使用类似。当 报表引用了多个查询时,参数将通过多页签设置,每个页签代表一个查询。图17-12参数设置(2) SQL设计SQL设计包括向导设计和手工设计两种方式。无论采用哪种,在完成设计时系统均会对SQL进行合法性校验,如未通过校验则不能保存设计。作为向导设计的一个 重要组成环节,有必要先介绍一下数据字典。数据字典前面已经提到,查询对象的属性中包含数据源信息,在设计查询的时候需要 加载相应数据源的数据字典。NC的数据库以DDC作为数据字典,但非 NC的数据库则没有DDC系统会根据执行数据源是

25、NG IUFO或其它数据库三种情 况分别加载不同的数据字典,而且这一机制已经预留了扩展的接口,从而可 以面向各种类型的数据库执行取数功能。关于数据字典的生成有多种做法,可以参考DDC的专门文档。查询引擎中用到的数据字典都以一棵对象树的形式存在,树节点包括目录、表、视图、字 段、外键等信息,通过双击对象节点可以协助录入SQL语句的成分。向导设计向导设计参考典型 SQL的构成规则,充分利用数据字典的功能,引导用户一 步步完成SQL的设计,因此是推荐使用的方式。它由以下六个环节构成,其 中最后一步“交叉属性”超岀了 SQL的涵义,在后面的章节中进行专门介绍。表定义:即SQL语句中的from部分,可以

26、利用数据字典选择库里的数据 表,也可以选择查询对象,从而实现查询的集成(基于查询结果定义新 的查询)。图17-13表定义图17-14数据表与临时表连接定义:即SQL语句中的join部分(表间连接关系),支持单键连接 和多键连接两种模式。图17-15连接定义字段定义:即SQL语句中的select部分,可以定义任何 SQLSERVER法 支持的查询表达式,但要保证字段别名不重复且使用规范名称(以字母 开头、由字母、数字、下划线组成的字符串,且不能使用SQL保留字)。如果使用了聚集函数,则由系统自动完成group by部分。图17-16字段定义图17-16表达式生成器字段表达式定义:下面作些特殊函数

27、的用法说明。如其它函数:CASE WHEI的用法如某查询定义中,当科目表中的字段“余额方向”为1时,需将查询中的字段“余额方向名称(如字段别名为name)值显示为借,否则为”贷”。则字段表达式为 case whe n =1 the n 借else 贷end操作方法:双击“其它函数”中的CASEWHEN则在字段表达式中生成:case when then else end,然后在字段表达式的编辑框中继续手工编辑成完整表达式:case whe n =1 the n 借else 贷end ,然后按“确定”。图 17-17 CASE WHEN的用法 1图 17-17 CASE WHEN的用法 2 筛选条

28、件定义:即 SQL语句中的where部分,可定义确定条件和待定条 件,后者可以通过双击右操作数编辑框弹出参数界面并作引用。图17-18筛选条件定义排序字段定义:即 SQL语句中的order by 部分。图17-17排序字段定义数据交叉属性:交叉是一种常用的多维数据分析手段,详见后文。 手工设计手工设计是支持自由SQL的方式,由于复杂 SQL在解析、适配、执行等方面的不稳定性较大,因此不推荐普通用户使用。手工设计包括:SQL录入:用户可以在数据字典的辅助下录入SQL语句,要求遵循SQLSERVE 语法。图17-20 SQL 录入字段显示名设置:系统通过对用户录入SQL的解析获得字段信息,并向用户

29、提供输入字段显示名的机会,显示名的默认值与查询字段的物理名 相同。图17-21字段显示名设置(3)数据交叉数据交叉包括第一类 (投影)交叉和第二类(旋转)交叉两种类型。两类交叉的差别 在于:第一类交叉属于查询行为,适用于行列设置都已在表样中固定的报表,其 交叉结果严格遵循表样格式,其行列结构不会受查询数据的影响;第二类交叉属 于数据加工行为,其交叉后的行列结构在查询岀数据之前不可预料,多用于完全 真实地对原始数据进行动态处理。第一类(投影)交叉假定有一个查询 SQL,其查询结果是单行单列的汇总值,另外还有两组 WHERE条件的序列,分别为横向序列(WhereX、Where%、 WhereX)和

30、纵向序列(WhereY、WhereY2、Where%),则数据矩阵 A (aj )对应的结果集成为投影交叉,aj是WhereX和WhereY同时作用在上述 SQL上获得的结果。 比如,某查询用于查岀公司和部门下的人数,原始SQL为:select , , , fromic_general_b left outer join bd_invbasdocon=left outer join bd_in vcl on = group by ,查岀的结果如下图所示:图17-22原始数据(无交叉)现在把查询字段中只保留实收数一项,然后进行如下的投影交叉设置:图17-23投影交叉设置则交叉后的结果如下图所示:

31、图17-24投影交叉结果第二类(旋转)交叉旋转交叉用于显示表中某几个字段(称为交叉值字段)的统计值,并将其分组放置在查询结果中,一组列在数据表的左侧(称为交叉行字段),一组列(称为交叉列字段)旋转到数据表的上部成为列表头,统计值则放在对应的 交叉单元。关于旋转交叉的更细节的内容,请参考交叉表使用说明。对于投影交叉中的例子,假定进行如下的旋转交叉设置(其中交叉砝码表示 交叉值字段的位置,它只能岀现在交叉行字段或交叉列字段当中):图17-25旋转交叉设置则交叉后的结果如下图所示:图17-26旋转交叉结果(4)代码嵌入代码嵌入包括 SQL整理、数据加工、数据穿透等三种查询对象使用方式。SQL整理SQ

32、L整理是指在SQL查询之前,对 SQL所作的调整。通常会根据参数的不同, 对查询的表、字段或条件等信息进行增补或修改。SQL整理的具体内容由内嵌的代码片段描述(这与后面将介绍的数据加工和穿透规则一样),代码的 录入可通过编码向导协助完成,尽管如此,这几种功能仍然推荐由高级实施 人员或程序员使用。图17-27 SQL整理代码在图示的SQL整理代码中,当参数“ detail 取值为“ Y”时,引擎会在本查 询对象已完成的 SQL设计基础上多查询一张表(bd_defdoc )和两个字段(档案编码、档案名称),从而获得更明细的查询信息;如果该参数取值不为 “ Y,则仍然按照SQL设计的定义去执行查询。

33、以下简单介绍几种 SQL整理算法的编码向导使用方法:追加查询表:参数为待追加的表物理名。图17-28追加表向导追加连接条件:与追加表同时使用,参数为连接模式、追加表物理名和 追加的表间连接条件。图17-29追加连接条件向导追加查询字段:与追加表同时使用,参数为追加字段的表达式、显示名 和别名。图17-30追加字段向导按参数追加条件:根据参数取值的不同追加不同的筛选条件,参数为参 数名和筛选字段。图17-31按参数追加条件向导数据加工数据加工是指某个(或某几个)查询结果集在经过一系列加工算法的变换后 得到另一个结果集,而后者通常是业务上要求的展现结果。相关的算法又称 为加工滤镜,滤镜通常支持输入

34、多个结果集和输岀一个结果集,并可以嵌套 使用。数据加工与SQL整理的区别在于:前者在SQL查询之后进行,作用的对象是结果集;后者在查询之前进行,作用的对象是SQL定义。在数据加工的编码向导中,提供了多种实用加工滤镜。图示的数据加工代码 把主键分别为“ user1 和“ user2 的两个结果集按照 pk_corp字段为键进user namelpk_corp行了左外连接,并在连接结果中保留了“ user name2 ”三歹列。图17-32数据加工代码以下简单介绍几种数据加工算法的编码向导使用方法:由查询获得结果集:根据查询ID和参数获得查询结果集,如果没有参数或不需要设置参数,则参数变量可取nu

35、ll。图17-33获得结果集向导公式设置:参数为公式列名、返回值数据类型和公式,如果公式列名不存在 则新增一列,否则将该列的内容更新为公式返回值。图17-34公式编辑图17-35公式定义结果集连接:指定两个结果集的连接字段、连接方式和连接后的保留字段, 得到连接后的结果集。图17-36结果集连接向导结果集联合:指定两个列结构相兼容的结果集,得到联合(union )后的结果。图17-37结果集联合向导数据穿透数据穿透:假定报表R1上存在某个区域 A1,A1内部有若干业务数据,如果以A1为岀发点能够切换到另一张报表R2的上的区域 A2,而且A1和A2的内部数据存在着某种内在联系,则称可以从R1穿透

36、到R2o当这种穿透行为传递下去,就可以了解某张报表的数据明细,甚至追溯到它的数据来源。通常 会把上述的区域选为一个表格行或者一个表单元,而上述的内在联系就称为 穿透规则。一个查询上可以定义多个穿透规则,每个规则需要指定穿透的目标查询,同 时目标查询上要创建一个过滤型参数,用于接收穿透区域的取值。下图所示 的穿透规则表达了这样的一个穿透意愿:当用户选中了当前查询结果的某行 时,允许他按照“ psncode”字段在选中行的取值穿透到另一个查询(即目标查询,其ID为“ rygzay ”),而目标查询的接收参数为“psncode”。一个查询可以设置多条穿透规则,由本查询可穿透到的目标查询需要创建一 个

37、(或多个)过滤型参数,用于接收穿透值。下图所示的穿透规则表达了以 下的穿透意愿:如果用户选中了当前查询结果的某行时,允许用户根据选中 行的psncode字段取值穿透到另一个查询(即目标查询,其ID为rygzan ”),而目标查询的接收参数为ps ncode图17-38穿透规则定义向导图17-39穿透规则代码下图显示了一个由存货库存存量信息穿透到存货信息再穿透到存货分类信息 的用例,其中第一步穿透是非等值穿透(相当于“存货名称like 芯片%“),第二步是等值穿透(相当于“存货分类=产成品”)。按以“芯片“打头的存货名称由库存实收数量统计表穿透到存货信息按存货分类为“产成品“从存货信息表穿透到存

38、货分类信息图17-40穿透效果示意(5)查询浏览查询执行与展现在建立好查询模型之后,系统提供预览查询执行结果的功能。用户首先输入 执行查询所需要的参数取值(如果有参数的话),查询引擎会根据该查询对 象的数据源去对应的数据库执行查询,在经过查询结果集评估(对于查询记 录数过大的情况允许用户优化或放弃查询)之后,把结果集展现给用户。在 展现之后,用户可以继续进行穿透、交叉和仪表测试等工作。图17-41查询预览数据导岀导岀功能支持将预览数据导岀为纯文本文件,并可进而用EXCEL打开。随着产品的发展,数据导出的格式会逐步丰富。创建物化表查询引擎可以根据预览数据直接到数据库创建物化表,同时将物化表的结构

39、 注册到DDC中,以后的SQL设计就可以基于新创建的物化表进行,从而扩充 了查询集成的范围。至于如何保证物化表数据的同步刷新,可以参看抽取任 务一节。图17-42创建物化表格式模型设计界面模型节点的新建和管理参见前面章节。可以设计新的界面模型, 也可以对已有的界面模型进行修改。界面模型的设计包括引用查询,界面可视化设计,绑定数据集,数据预处理等部分。界面模型设计态和运行态的基本流程如下图所示(设计态的操作并没有严格意义上的顺序限制):图17-45界面模型流程(1)引用查询引用查询是指将界面模型所要展现的查询结果集对应的查询定义引用到模型中 来。由于同一查询定义根据不同参数设置也可以得到不同结果

40、集,所以为了区分 这种绑定基于同一查询定义的不同结果集时,对每一个查询结果集起一个单一的 别名来标志。图17-46查询引用界面对于查询结果集之间存在的某种一对多的关系,还可以根据需要建立主从关系(即主从表):图17-47主子连接设置界面(2)格式设计界面模型的格式设计包括了控件管理、行列格式设计以及数据预处理等三部分。 分别介绍如下。图17-48界面模型设计界面控件管理广“ 1界面模型设计工具提供了最常用的控件,如图17-48中控件栏控所示,分别是按钮、复选框、组合框、标签、列表、单选框、多页签、表、文本域、文表图表 本框、树、面板、分割栏、主子表和图表,其中最重量级的控件是表和图表,绝大部分

41、的数据集展现工作是这两个控件完成的。初始时,界面上只有一个面板,处于选中状态,布局是默认的 BorderLayout接下来的工作就是要在这个面板上定制界面,这个过程和一般的可视化设计 大同小异,在此不再赘述。图17-49界面模型双击界面上的控件就可以打开属性编辑器,可以编辑控件的相关属性。属性 编辑器上边是当前界面的控件列表,下面列岀了当前选中控件的属性列表。可以从控件列表中选中控件,也可以在界面上双击控件来选中控件进行属性 编辑。图17-50属性编辑器所有控件都有背景色,前景色,字体和首选大小等普通属性。其次,控件具 有一些自己特有的属性,如面板具有布局属性,分割栏有分栏方向,分栏位 置等特

42、有属性。下面介绍一下几个主要的控件。展现数据集的最重要的控件一表的几个属性:绑定数据集:可以将表绑定到引用查询中的某一个查询定义,那么在运 行态下表展现的就是该查询定义对应得到的查询结果集。当设置了表的 数据集绑定属性后,该查询定义中定义的列就相应的岀现在表里(此时 没有数据只有表头);列格式绑定:有时候会对表中的数据展现有各种格式上的要求,如预警 显示,精度设置,前缀后缀等等。这时可以设置表的列格式属性,在列 格式属性里不但可以设置列绑定的列格式,也可以设置列的显示顺序, 显示与否等属性(列格式的定义在后面的小节里专门讲述)。图17-51列格式设置列表头绑定:当表绑定了数据集之后,可以根据展

43、现需要绑定列表头格 式,在表头ID属性里绑定表头的ID之后,从界面上就可以看到表的列 表头已经绑定到了表头ID对应的表头格式(列表头格式的设计在后面的小节里会专门讲述);行表头绑定:如果表绑定的查询定义里定义了第一类(投影)交叉,则 表还可以设置行表头格式。关于行表头的定义和设置在后面小节中讲述。在设置了数据集绑定属性之后,可以设定图表控件的数据绑定属性。在图表控件上弹岀右键菜单点击数据绑定菜单项,可弹岀数据绑定设置界面如图17-52所示。在这里可以设置图表的类型,以及绑定的系列等属性。图17-52图表数据绑定设置界面文本框,文本域,标签 等简单控件提供了绑定到多种内容的属性,它可以绑 定查询

44、结果集中某列,绑定查询结果集对应的参数,绑定环境变量等等。下 面是设置一个文本框绑定到查询参数的截图。图17-53绑定查询参数的文本框行列格式设计行列格式设计包括列格式定义,列表头定义和行表头定义三部分,分别说明 如下。列格式定义图17-54列格式定义界面可以定义四种类型的列格式:字符型,数值型,货币型,百分比型,后三种 实际上都属于数值型数据的不同展现。格式定义包括对齐方式,文本颜色, 前导符号等等。对于数值型的列格式还可以设置保留小数位数,是否加千分 位等格式。列格式的一个比较重要的设置就是设置预警显示,预警显示就是 将符合指定条件的数据按指定颜色来显示。如销售额这样的数据通过分段预 警就

45、很容易体现岀高中低来,方便浏览数据。图17-55中所示预警设置就是将大于2000的数用红色显示。预警条件中除支持用常量表达式进行比较之外,也支持用含变量的表达式进行比较,其中的 变量名必须是表中某列的列名。如表中有A, B, C三列,要求某行中 A列中的值大于B列和C列的值之和时该行 A列按某种指定颜色显示,可以给 A列 绑定列格式,在列格式的预警设置中设置预警条件为B+C(注:这里的A,B,C都是指的列名,不是列显示名)。图17-55预警设置界面列表头定义图17-56列表头设计界面有时候为了方便归类和分组列数据,需要定义多表头来加强展现。如图17-56,可以根据自己的需要定义一个多表头用来展

46、现,在这里,可以很方便的组合表中列,定义好的表头格式存在数据库中, 并有一个表头ID与之对应。 通过表头ID该列表头格式可以被表绑定(绑定了列表头的表效果参见图17-49 )。?小技巧:定义对应某一查询的列表头展现时,可以通过参照,选中该查询来快速引入该查询定义的列,而不用手工录入。行表头定义如果设置表的绑定数据集属性到一个定义了第一类交叉的查询,那么表中会 岀现与查询中定义的列和行相对应的列头和行头。默认的列头和行头没有任 何附加的格式,如图 5-57所示。图17-57绑定到第一类交叉查询定义的表就像可以给列分组定义列表头一样,也可以给行分组定义行表头。如图17-58所示,类似于列表头的定义

47、,也可以合并行,还可以定义行号显示与否,行 号显示的位置,甚至可以为定义好的表头绑定列表头。保存后可以看到界面 上的表已经显示了新定义的行表头格式。图17-58行表头设计界面图17-59定义了行列表头格式的表预定义数据处理界面模型中支持两种数据预定义的处理:定义公式列和定义小计合计。其中,公式列定义是基于查询结果集的,定义的公式列对于所有绑定该查询结果集 的控件都是可见的。小计合计是基于表控件的,定义的小计合计只对该表起 作用,不影响其他绑定到相同数据集的控件。公式列点击数据处理菜单下的公式列菜单项,就会弹岀如图17-60所示的公式列定义界面。图17-60公式列定义界面在查询结果集下拉框中选中

48、要定义公式列的数据集,如果是添加公式列,则 数据集中可选的列名会岀现在可选列列表中(如果是预定义的公式列,则可 选列是数据集的原始列,如果是运行态定义的公式列,可选列还包括已经定 义的公式列),双击列项可将该列添加到公式表达式中,公式列中可用函数 和操作符也已列岀,均是通过双击可以添加到表达式中。添加公式列需要指 定公式列名和公式类型,也可以给公式列指定列格式。公式列表达式只支持Ascii字符,不支持中文,如果表达式有误,则运行态下公式列内各行的值 均为空。如果是删除公式列,列表中列岀了当前数据集已定义的公式列,选 中即可删除。修改公式列界面与添加公式列类似。小计合计设计界面模型时在表控件的表

49、头上弹岀右键菜单,点击小计合计菜单项可弹岀设置小计合计的界面,如图17-61。图17-61小计合计设置界面根据表绑定的查询定义的不同,上图中的界面会稍有区别,分别说明如下。普通表:可以设置根据什么列分组,进行小计合计,以及分组列的升降序;可以设置小计合计计算与否,以及小计行和合计行标志展现;可以设置需要小计合计的列,以及统计运算的类型,目前支持的运算类型有 求和、最大值和最小值;可以设置统计数据放置在原始数据之前还是放置在后。第一类交叉表(投影交叉表):定义了第一类交叉的查询结果集行列结构是固定的,多用在固定格式的报表 中,因此,其小计合计也设计得稍有区别:在这种情况下,小计合计是根据 表的行

50、头来进行的,它根据表行头所示的树状结构中树节点的级次来小计合 计,所以,对于这类表,设置的是小计开始级次和终止级次,而不是分组列。(3)界面浏览对于已经格式设计完毕的界面模型,可以运行该界面来查看结果。界面初始化发岀运行某界面的命令后,在界面呈现岀来之前,系统会做一系列的初始化 工作:根据界面模型引用的查询定义查询得到对应的结果集,由界面定义构 造岀界面,根据数据集绑定属性将控件绑定到对应的结果集,当所有的初始 化工作都完成以后,界面才呈现在岀来。图17-62查询参数设置界面如果界面引用的查询定义里定义了查询参数,那么在初始化界面工作去后台查询结果集之前,会要求输入查询参数。如当运行图17-49中定义的界面模型(它引用的查询如图17-46所示)时,因为其引用的查询定义中“存

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论