新一代云ERP解决方案产品应用方案企业建模平台之自定义查询篇用友网络科技股份有限公司新一代云ERP解决方案2目录版权.3导读.41概述.51.1产品概述..51.2产品价值..52查询引擎应用.52.1基本概念介绍..52.2典型案例.72.3查询引擎设置.152.3.1查询/界面对象树管理.152.3.2查询引擎权限控制.583操作指南..59用友网络科技股份有限公司新一代云ERP解决方案3版权用友集团未经用友集团的书面许可,本操作手册任何整体或部分的内容不得被复制、复印、翻译或缩减以用于任何目的。本操作手册的内容在未经通知的情形下可能会发生改变,敬请留意。请注意:本操作手册的内容并不代表用友软件所做的承诺。用友网络科技股份有限公司新一代云ERP解决方案4导读此手册面向实施顾问以及企业关键用户,旨在为实施规划、解决方案制定和落实提供指导。手册围绕产品能够解决的主要业务场景展开,并以此为依托展现产品的关键应用功能,提供业务需求与产品功能相匹配的思路。本手册包括两部分,第一部分是对产品及其价值的概要介绍;第二部分是对有关本模块的主要流程功能的介绍,详情可查阅产品相关模块的在线帮助说明。用友网络科技股份有限公司新一代云ERP解决方案51概述1.1产品概述在数据库应用系统中,数据查询始终是应用的基础和核心。数据利用和挖掘的常用方式就是从数据库中获取用户所需的业务数据,按照用户预定义的格式,通常以业务报表的形式提供给用户进行浏览、分析、统计、打印及转换,还可作进一步的处理。由于查询需求的多样性,不可能穷举所有的用户查询,当然也不能要求普通用户去直接拼写SQL语句,因此需要提供一个工具让用户可以自己进行查询的设计和定制。主要在查询引擎中定制个性化的查询设计。1.2产品价值自定义查询为企业定制个性化的查询,为满足企业对业务数据的灵活运用提供了建模配置平台。2查询引擎应用查询引擎是面向具有一定数据库知识的专业人士的查询建模工具,可以全面支持复杂查询的设计和个性化的报表展现。查询引擎由两个功能点组成:查询引擎管理和查询引擎权限控制。2.1基本概念介绍在介绍查询引擎的具体设置方案之前,首先需对如下基本概念有一定的了解。1.数据表、临时表、报表数据表是数据库里物理存在的表;报表是符合用户要求的一个界面展现,它通常是一个二维的数据表格;有时我们仅仅通过数据表无法直接查出报表要求的数据结果,这时可能需要通过数据表查询建立一些具有过渡性质的中间表,然后再通过这些中间表查出最终结果,这种起到过渡作用的表称为临时表。2.数据字典数据字典是企业建模平台中统一的数据模型设计平台,注册了数据库表结构信息,常用于提供数据库对象的逻辑属性,有助于提高查询定义的直观性和易用性。用友网络科技股份有限公司新一代云ERP解决方案63.内连接与外连接这是多表查询中的不同连接方式,其中外连接主要包括左连接(leftoutjoin)和右连接(rightoutjoin)两种。左连接取出左侧关系中所有与右侧关系的任一元组都不匹配的元组,用空值填充所有来自右侧关系的属性,再把产生的元组加到内连接的结果上。右连接与左连接完全对称,“表A左连接表B”与“表B右连接表A”的效果是一样的。以下述的表A和表B为例,它们以字段K作为键值进行不同连接后会得到不同结果集。内连接(selectA.K,A.V1,B.K,B.V2fromAinnerjoinBonA.K=B.K)的结果是:A.KA.V1B.KB.V2011001100033003300左连接(selectA.K,A.V1,B.V2fromAleftjoinBonA.K=B.K)的结果是:A.KA.V1B.KB.V20110011000220033003300右连接(selectA.K,A.V1,B.V2fromArightjoinBonA.K=B.K)的结果是:A.KA.V1B.KB.V2011001100033003300055004.普通查询(简单查询)与复合查询两者的查询结果都可以看成是临时表,其差别在于:普通查询是基于数据表定义查询,复合查询是基于已经定义好的查询来定义查询。5.参数定义通常用于查询定义中SQL向导设计工具中的where条件表达式中,存在字符型和数值型(浏览时可直接录入)、字符枚举和数值枚举型参数(浏览时可下拉录入),参照型参数(浏览时可参照录入)等。6.穿透当明细表与汇总表一起出现时,某种内在联系可从汇总数据联查明细数据,称穿透或钻取。7.分级汇总KV1011002200330表AKV2011000330005500表B用友网络科技股份有限公司新一代云ERP解决方案7按分级列(具有一定级次的编码规则),对汇总列(数值型)进行各级汇总,并在各级末尾添加分级汇总列。8.交叉按一定交叉规则进行旋转交叉或投影交叉。1)旋转交叉行列不固定;存在一定交叉规则(指定交叉行、交叉列、交叉值字段)之后,报表全动态地实现数据交叉。常用多层列表头辅助体现交叉的维度,且交叉规则能够在运行态重新设定。适用于无法预先确定交叉后列结构的报表。2)投影类交叉行列固定;每行、每列均对应一个筛选条件,而单元格第i行第j列的内容根据SQL语句“select统计函数(字段)from表where(行条件i)and(列条件j)”查出,且是个唯一的值3)交叉砝码交叉设置界面中的交叉砝码的作用是,描述交叉值字段对应的列出现在交叉列展开后的哪个层次上。4)退化在投影交叉查询中的筛选条件中设置为退化的项;用于在运行态(浏览态)进行再次投影交叉时,其结果集中需显示的备用行或备用列。在第一次投影交叉查询结果中,退化项则既不出现在行头上,也不出现在列头上。9.行间占比与列间占比行间占比指先按分组排序列进行分组排序,然后计算单元格与其所在分组小计值的比,或者为单元格与其所在列总合计值的比。列间占比指“比例=本列数值/多列总和”。10.合并查询报表当中的一部分区域由查询结果填充、另一部分区域由手工填入,此类报表可通过“合并查询”模式完成。2.2典型案例报表是由数据和格式组成的整体。报表中的取数规则离不开SELECT查询语句,查询模型中的核心功能“SQL向导设计”实际是SELECT查询语句的可视化工具。如汇总表中的SELECT查询语句:SELECT年度,公司编码,公司名称,科目,sum(借方发生额),sum(贷方发生额)FROM凭证表INNERJOIN凭证分录表ON凭证表.凭证主键=凭证分录表.凭证主键INNERJOIN公司目录表ON凭证表.公司编码=凭证分录表.公司主键INNERJOIN科目表ON凭证分录表.科目主键=科目表.科目主键用友网络科技股份有限公司新一代云ERP解决方案8WHERE公司=corpGROUPBY年度,公司编码,公司名称,科目ORDERBY年度,公司编码,公司名称ASC以下“SQL向导设计”工具(如下图)中:“连接表”页签对应FROM…..部分“连接条件”页签对应INNERJOIN…….ON部分“连接字段”页签对应SELECT……部分“筛选条件”页签对应WHERE……部分“排序字段”页签对应ORDERBY……系统自动对不含聚合函数的字段作GROUPBY处理。1.汇总表年度公司编码公司名称科目借方发生额贷方发生额200101A1001100200101A2001100200202B1002200200202B2002200200303C1003700200303C2003700用SQL语言表示:SELECT年度,公司编码,公司名称,科目,sum(借方发生额),sum(贷方发生额)用友网络科技股份有限公司新一代云ERP解决方案9FROM凭证表,凭证分录表,公司目录表,科目表INNERIN…ON…GROUPBY年度,公司编码,公司名称,科目ORDERBY年度,公司编码,公司名称2.明细表年度公司编码公司名称凭证号制单日期科目借方发生额贷方发生额200101A12001/9/11001100200101A12001/9/12001100200202B22002/8/11002200200202B22002/8/12002200200303C32003/8/11003300200303C32003/8/12003300200303C42003/10/11003400200303C42003/10/12003400用SQL语言表示:SELECT年度,公司编码,公司名称,科目,借方发生额,贷方发生额FROM凭证表,凭证分录表,公司目录表,科目表INNERIN…ON…ORDERBY年度,公司编码,公司名称3.旋转交叉如对上述的明细表进行旋转交叉交叉列为1列时交叉行:凭证号、科目交叉列:年度交叉值:借方发生额交叉砝码(借方发生额):在列头的第2层复合维度:为Y时用友网络科技股份有限公司新一代云ERP解决方案10年度凭证号、科目200120022003借方发生额借方发生额借方发生额110011002100220031003300120012200232003交叉行:凭证号、科目交叉列:年度交叉值:借方发生额交叉砝码(借方发生额):在列头的第1层年度凭证号、科目借方发生额借方发生额借方发生额200120022003110011002100220031003300120012200232003交叉列为多列时交叉行:凭证号、科目交叉列:年度、公司名称交叉值:借方发生额、贷方发生额交叉砝码(借方发生额、贷方发生额):在列头的第3层列复合维度:为Y时年度、公司名称凭证号、科目200120022003ABC借方发生额贷方发生额借方发生额贷方发生额借方发生额贷方发生额11001100120011002100220022002200310033003200330041003400用友网络科技股份有限公司新一代云ERP解决方案1142003400交叉行:凭证号、科目交叉列:年度、公司名称交叉值:借方发生额、贷方发生额交叉砝码(借方发生额、贷方发生额):在列头的第3层列复合维度:为N时4.投影交叉部门姓名性别财务开发部Sbq男财务开发部sy男供应链开发部ghl女财务开发部fll女性别部门男女财务开发部21供应链开发部2用SQL语言表示:selectcount(性别)from人事视图where部门=’财务开发部’and性别=’男’5.穿透1)对普通查询结果穿透:用友网络科技股份有限公司新一代云ERP解决方案12可通过“SQL向导设计”及“穿透规则”中的‘查询间穿透’来共同完成。年度公司编码公司名称凭证号制单日期科目借方发生额贷方发生额200101A12001/9/11001100200101A12001/9/12001100200202B22002/8/11002200200202B22002/8/12002200200303C32003/8/11003300200303C32003/8/12003300200303C42003/10/11003400200303C42003/10/12003400200403C52004/4/11003500按单列(科目=1003)穿透结果:年度公司编码公司名称凭证号制单日期科目借方发生额贷方发生额200303C32003/8/11003300200303C42003/10/11003400200403C52004/4/11003500按多列(科目=1003和年度=2003)穿透结果:年度公司编码公司名称凭证号制单日期科目借方发生额贷方发生额200303C32003/8/11003300200303C42003/10/110034002)对投影交叉结果穿透可通过“SQL向导设计”及“穿透规则”中的‘投影交叉穿透’功能来共同完成。性别部门男女财务开发部21供应链开发部2按单元格穿透:部门姓名性别财务开发部Sbq男财务开发部sy男6.行间占比可通过“SQL向导设计”及“数据加工”中内置的‘分组统计’、‘行间占比’算法来共同完成。用友网络科技股份有限公司新一代云ERP解决方案13年度公司编码公司名称凭证号制单日期科目借方发生额借方占比200101A12001/9/11001100200101A12001/9/12001100200202B22002/8/11002200200202B22002/8/12002200200303C32003/8/11003300200303C32003/8/12003400如按公司编码对借方发生额进行汇总:年度公司编码公司名称凭证号制单日期科目借方发生额200101A12001/9/11001100200101A12001/9/12001100小计200200202B22002/8/11002200200202B22002/8/12002200小计400200303C32003/8/11003300200303C32003/8/12003400小计700合计1300行间占比结果:年度公司编码公司名称凭证号制单日期科目借方发生额借方占比1(借方发生额/分组小计)借方占比2(借方发生额/合计)200101A12001/9/110011000.50.0769200101A12001/9/120011000.50.0769200202B22002/8/110022000.50.1538200202B22002/8/120022000.50.1538200303C32003/8/110033000.42860.2308200303C32003/8/120034000.57140.30777.列向分支统计型可通过“SQL向导设计”功能来完成。原始数据如下:corpnamesexA公司韩千穗女A公司智银圣男A公司金晓光女A公司王丽娜女B公司金贤成男B公司姜希灿女用友网络科技股份有限公司新一代云ERP解决方案14通过SELECTcorp,(CASEsexWHEN'男'THEN1ELSE0END)ASmale,(CASEsexWHEN'女'THEN1ELSE0END)ASfemaleFROMT将获得如下结果:corpmalefemaleA公司01A公司10A公司01A公司01B公司10B公司01SELECTcorp,SUM(CASEsexWHEN'男'THEN1ELSE0END)ASmale,SUM(CASEsexWHEN'女'THEN1ELSE0END)ASfemaleFROMTEM_CASEGROUPBYcorp则将查出以下结果:corpmalefemaleA公司13B公司118.合并查询(半录入半嵌入型)可通过“合并查询”功能来完成,上述表格中的部分区域通过手工录入,部分区域通过嵌入查询完成。部门汉族满族蒙古族1、直属部门情况财务部<人数><人数><人数>行政部<人数><人数><人数>2、开发部门情况HR产品开发部<人数><人数><人数>HR产品市场部<人数><人数><人数>用友网络科技股份有限公司新一代云ERP解决方案152.3查询引擎设置在主菜单中单击【企业建模平台】→【自定义查询】→【查询引擎】的子菜单【查询引擎管理】,系统将弹出“查询引擎”的浏览窗口。查询引擎管理包括查询/界面对象树管理、查询模型设计、界面模型设计等主要功能。查询模型设计作用为通过查询模型设计向导将数据库里的查询逻辑组合起来,形成一套完整的查询体系;界面模型作用为引用定义好的查询模型,为最终的报表展示设计个性化的界面。2.3.1查询/界面对象树管理查询引擎主界面左侧为一棵对象树,树上挂有代表查询对象(查询设计)和界面对象(格式设计)的节点,右侧为显示当前选中对象基本属性的属性框。1.文件夹管理增加/删除/修改:在根节点或目录节点之下可以增加目录,删除目录时会删除目录下的所有对象。目录的可修改属性为目录名称。同一目录下的目录和对象不能重名。复制/剪切/粘贴:在查询子树或格式子树下,可以将一个目录及其下属内容从某位置拷贝或移动到另一个位置。2.对象管理增加/删除/修改:在根节点或目录节点之下可以增加查询对象或者界面对象。前者的属性为编码、名称和数据源,后者的属性为编码和名称,其中编码一经使用,就不再建议作任何修改,因为此编码可能被其它对象引用。复制/剪切/粘贴:在查询或格式子树下,可以将一个对象从某位置拷贝或移动到另一个位置。导入/导出:选中某个对象,可将其导出为XML文件,该文件可被导入到另外的目录下。此功能可用于对象的跨数据库复制。在导出查询对象或界面对象时,需将其引用的查询对象一并导出才有意义。选中某目录时,导入功能可用。用友网络科技股份有限公司新一代云ERP解决方案162.3.1.1查询模型设计查询模型设计包括参数定义、SQL设计(含交叉定义)、SQL整理、数据加工、穿透规则等几部分,其中穿透规则描述的是本查询与外部查询的通信关系,其余部分都用于描述查询内部的属性。查询模型又分设计态和运行态两种。设计态是组装查询模型的逻辑,运行态是执行并预览查询模型设计的最终结果。查询设计态流程图如下所示:查询模型运行态的基本流程图如下所示:1.参数控制参数是查询模型中代表动态信息的元素。在SQL设计、SQL整理和数据加工中,均可以根据参用友网络科技股份有限公司新一代云ERP解决方案17数的不同,对查询的定义和执行进行调整。如果创建某个参数的作用是根据其取值的不同改变WHERE条件的设置,则这类参数成为过滤型参数,这是最常用的参数功能。1)参数定义用于定义本查询内部引用的所有参数,其中参数名要保证互不相同。数据类型包括自由录入、枚举、参照几种,当类型为枚举时,枚举项为用“@”分隔的枚举值,或者是一个单字段的查询SQL;当类型为参照时,枚举项为基础参照名,或者是用尖括号括起的自定义参照的类名。选中左树中查询格式下的某一对象节点,点击菜单栏〖查询模型-参数〗,弹出参数定义对话框。2)参数引用参数可在SQL设计的“筛选条件”页签引用,也可在SQL整理或数据加工的嵌入代码中利用编码向导引用。选中左树中查询格式下的某一对象节点,点击菜单栏〖查询模型-SQL向导设计〗,弹出查询定义对话框。用友网络科技股份有限公司新一代云ERP解决方案183)参数设置运行态要求用户首先对参数进行设置,这与查询模板的使用类似。当报表引用了多个查询时,参数将通过多页签设置,每个页签代表一个查询。2.SQL设计向导设计参考典型SQL的构成规则,充分利用数据字典的功能,引导用户一步步完成SQL的设计,因此是推荐使用的方式。它由以下六个环节构成,其中最后一步“交叉属性”超出了SQL的涵义,在后面的章节中进行专门介绍。表定义:即SQL语句中的from部分,可以利用数据字典选择库里的数据表,也可以选择查询对象,从而实现查询的集成(基于查询结果定义新的查询)。用友网络科技股份有限公司新一代云ERP解决方案19通过点击〖数据表〗按钮,弹出选择数据表的对话框。用友网络科技股份有限公司新一代云ERP解决方案20通过点击〖元数据〗按钮,弹出选择“临时表”的对话框。用友网络科技股份有限公司新一代云ERP解决方案21连接定义:即SQL语句中的join部分(表间连接关系),支持典型和高级两种模式。用友网络科技股份有限公司新一代云ERP解决方案22字段定义:即SQL语句中的select部分,可以定义任何SQLSERVER语法支持的查询表达式,但要保证字段别名不重复且使用规范名称(以字母开头、由字母、数字、下划线组成的字符串,且不使用SQL保留字)。如使用了聚集函数,则由系统自动完成groupby部分。点击〖增加〗按钮,弹出字段表达式定义界面。用友网络科技股份有限公司新一代云ERP解决方案23字段表达式定义:下面作些特殊函数的用法说明。如其它函数:CASEWHEN的用法。如某查询定义中,当物资需求申请表中的字段“是否紧急”为1时,需将查询中的字段“是否紧急”(如字段别名为name)值显示为”是”,否则为”否”。则字段表达式为:casewhenpo_requireapp.burgency=1then'是'else'否'end操作方法:双击“其它函数”中的CASEWHEN,则在字段表达式中生成:casewhenthenelseend,然后在“表”面板中选择“物资需求申请表”,在“字段”面板中带出该表所包含的字段,将光标定位在when后面,双击“是否紧急”字段,则po_requireapp.burgency自动填充到表达式中,并在“字段显示名”和“字段别名”中自动填充上。在字段表达式的编辑框中继续手工编辑成完整表达式:casewhenpo_requireapp.burgency=1then'是'else'否'end,然后点击〖确定〗。用友网络科技股份有限公司新一代云ERP解决方案24点击〖确定〗后,字段表达式设置界面关闭,刚才设置的字段表达式体现在“选择字段”行中。用友网络科技股份有限公司新一代云ERP解决方案25筛选条件定义:即SQL语句中的where部分,可定义确定条件和待定条件,后者可以通过双击右操作数编辑框弹出参数界面并作引用。排序字段定义:即SQL语句中的orderby部分。数据交叉属性:交叉是一种常用的多维数据分析手段,详见后文。用友网络科技股份有限公司新一代云ERP解决方案263.数据交叉数据交叉包括第一类(投影)交叉和第二类(旋转)交叉两种类型。两类交叉的差别在于:第一类交叉属于查询行为,适用于行列设置都已在表样中固定的报表,其交叉结果严格遵循表样格式,其行列结构不会受查询数据的影响;第二类交叉属于数据加工行为,其交叉后的行列结构在查询出数据之前不可预料,多用于完全真实地对原始数据进行动态处理。1)第一类(投影)交叉假定有一个查询SQL,其查询结果是单行单列的汇总值,另外还有两组WHERE条件的序列,分别为横向序列(WhereX1、WhereX2、……、WhereXn)和纵向序列(WhereY1、WhereY2、……、WhereYn),则数据矩阵A(aij)对应的结果集成为投影交叉,aij是WhereXi和WhereYj同时作用在上述SQL上获得的结果。比如,某查询原始SQL为:selectbd_invbasdoc.invcode,bd_invbasdoc.invname,bd_invcl.invclasscode,bd_invcl.invclassname,ic_general_b.ninnumfromic_general_bleftouterjoinbd_invbasdoconic_general_b.cinvbasid=bd_invbasdoc.pk_invbasdocleftouterjoinbd_invclonbd_invbasdoc.pk_invcl=bd_invcl.pk_invclgroupbybd_invbasdoc.invcode,bd_invbasdoc.invname,bd_invcl.invclasscode,bd_invcl.invclassname查询结果为:存货编码存货名称分类编码类别名称实入数量0101电话机A0101产成品1000102电源A0201产成品200用友网络科技股份有限公司新一代云ERP解决方案270201导线02原材料3000202外模02原材料4000103芯片01产成品100在“交叉属性”页签中选择“投影交叉”选项,然后点击〖增加〗,设置对应的数据库表中的某字段作为筛选条件,并为其设置位置(行头、列头)。如下图。并在“选择字段”页签把查询字段中只保留实收数ic_general_b.ninnum一项,基于上述设置,查询结果预览如下:2)第二类(旋转)交叉旋转交叉用于显示表中某几个字段(称为交叉值字段)的统计值,并将其分组放置在查询结果中,一组列在数据表的左侧(称为交叉行字段),一组列(称为交叉列字段)旋转到数据表的上部成为列表头,统计值则放在对应的交叉单元。在“交叉属性”页签中选择“旋转交叉”选项,左侧显示“显示字段”页签设置的字段,通过“→”箭头将左侧的字段拉到“行”区域或“列”区域或“值”区域。用友网络科技股份有限公司新一代云ERP解决方案28接上述投影交叉中的例子,假定进行如下的旋转交叉设置(其中交叉砝码表示交叉值字段的位置,它只能出现在交叉行字段或交叉列字段当中):为达到如下表格的效果:存货名称实入数量产成品原材料外模400导线300电源A01200电话机A02100需将“存货名称”拉到行区域;将“实入数量”拉到值区域;将“类别名称”拉到列区域,作为交叉砝码。4.代码嵌入代码嵌入包括SQL整理、数据加工查询对象使用方式。1)SQL整理SQL整理是指在SQL查询之前,对SQL所作的调整。通常会根据参数的不同,对查询的表、字段或条件等信息进行增补或修改。SQL整理的具体内容由内嵌的代码片段描述(这与后面将介绍的数据加工和穿透规则一样),代码的录入可通过编码向导协助完成,尽管如此,这几种功能仍然推荐由高级实施人员或程序员使用。点击〖查询模型-SQL整理〗,弹出如下界面。用友网络科技股份有限公司新一代云ERP解决方案29以下简单介绍几种SQL整理算法的编码向导使用方法:追加查询表:参数为待追加的表物理名。用友网络科技股份有限公司新一代云ERP解决方案30追加连接条件:与追加表同时使用,参数为连接模式、追加表物理名和追加的表间连接条件。追加查询字段:与追加表同时使用,参数为追加字段的表达式、显示名和别名。用友网络科技股份有限公司新一代云ERP解决方案31按参数追加条件:根据参数取值的不同追加不同的筛选条件,参数为参数名和筛选字段。2)数据加工数据加工是指某个(或某几个)查询结果集在经过一系列加工算法的变换后得到另一个结果集,而后者通常是业务上要求的展现结果。相关的算法又称为加工滤镜,滤镜通常支持输入多个结果集和用友网络科技股份有限公司新一代云ERP解决方案32输出一个结果集,并可以嵌套使用。数据加工与SQL整理的区别在于:前者在SQL查询之后进行,作用的对象是结果集;后者在查询之前进行,作用的对象是SQL定义。点击〖查询模型-数据加工〗,弹出如下界面。在数据加工的编码向导中,提供了多种实用加工滤镜。以下简单介绍几种数据加工算法的编码向导使用方法:由查询获得结果集:根据查询ID和参数获得查询结果集,如果没有参数或不需要设置参数,则参数变量可取null。用友网络科技股份有限公司新一代云ERP解决方案33公式设置:参数为公式列名、返回值数据类型和公式,如果公式列名不存在则新增一列,否则将该列的内容更新为公式返回值。用友网络科技股份有限公司新一代云ERP解决方案34结果集连接:指定两个结果集的连接字段、连接方式和连接后的保留字段,得到连接后的结果集。结果集联合:指定两个列结构相兼容的结果集,得到联合(union)后的结果。5.查询浏览1)查询执行与展现在建立好查询模型之后,系统提供预览查询执行结果的功能,即查询模型的运行态。用户首先输用友网络科技股份有限公司新一代云ERP解决方案35入执行查询所需要的参数取值(如果有参数的话),查询引擎会根据该查询对象的数据源去对应的数据库执行查询,在经过查询结果集评估(对于查询记录数过大的情况允许用户优化或放弃查询)之后,把结果集展现给用户。在展现之后,用户可以继续进行穿透、交叉和仪表测试等工作。选中左树中查询格式下的某一节点,点击〖浏览〗,选择具体的查询条件,展示出符合条件的查询模型设计的最终结果。2)配置型参数配置型参数提出是为了将一些与查询定义相关的查询属性与具体的查询定义模型绑定起来,对于某一个特定的查询定义模型,可以在设计态规定属性,在查询执行态,查询执行的动作根据规定的属性执行,这些属性包括:A.物化临时表刷新设置:用户在查询时,如果该查询定义引用了物化临时表,是否提示用户刷新物化临时表。B.查询浏览是否评估结果集:在执行查询之前是否评估结果集的行数。用友网络科技股份有限公司新一代云ERP解决方案36C.查询结果集警戒行数:在选定评估结果集的条件下,如果超出了规定的警戒行数,则会提示用户是否选择前N行,N由用户制定。D.浏览态最大行数:规定在浏览态一个结果集最多能有多少行数据,此参数为了限制过大的结果集导致内存溢出。E.是否延迟加载:该选项规定在主从联动的情况下,若该查询定义作为子结果集呈现,是否延迟加载。F.是否分页:指定该查询定义在浏览态是否分页,如果分页,每页多少行数据。6.分页技术在制作报表的过程中,不可避免的会遇到数据量过大的问题,虽然可以通过加待定参数,过滤条件等手段来对结果集进行控制,不过有时这些手段也无能为力,例如要查询某公司一年内的营销明细,虽然可以增加一个月度参数控制一次查出的数据量,但如果某个月的数据量较其他月增加了好几倍,那么就存在查出的数据量过大以致内存溢出的风险。数据分页较好地控制了这一缺陷,用户可以在查询配置参数处选择是否分页以及一页内的数据行数。如上图在配置参数中设置了分页。查询结果如下,用户可以通过翻页控件来任意指定需要翻到的页数。用友网络科技股份有限公司新一代云ERP解决方案372.3.1.2界面模型设计界面模型节点的新建和管理参见前面章节。可以设计新的界面模型,也可以对已有的界面模型进行修改。界面模型的设计包括引用查询,界面可视化设计,绑定数据集,数据预处理等部分。界面模型是针对左树中的格式设计节点而用的。界面模型也分为设计态和运行态。设计态用来组装定义好的查询模型的显示样式,为最终用户设计美观并准确的界面样式;运行态是为了预览界面模型的设计效果的。界面模型设计态和运行态的基本流程如下图所示(设计态的操作并没有严格意义上的顺序限制):1.引用查询引用查询是指将界面模型所要展现的查询结果集对应的查询定义引用到模型中来。由于同一查询定义根据不同参数设置也可以得到不同结果集,所以为了区分这种绑定基于同一查询定义的不同结果集时,对每一个查询结果集起一个单一的别名来标识。在【查询引擎管理】节点选中左树中的格式设计下的某一节点,点击菜单栏〖界面模型→引用查询〗,弹出“查询引用”编辑界面,选择左树中需要引用的数据表,通过〖>〗添加到右侧。用友网络科技股份有限公司新一代云ERP解决方案38对于查询结果集之间存在的某种一对多的关系,还可以根据需要建立主从关系(即主从表),点击〖主从〗按钮,弹出主从关系编辑界面:2.格式设计在【查询引擎管理】节点选中左树中的格式设计下的某一节点,点击菜单栏〖界面模型→格式设计〗,切换到界面模型的格式设计界面。包括控件管理、行列格式设计以及数据预处理等三部分。分别介绍如下。用友网络科技股份有限公司新一代云ERP解决方案391)控件管理界面模型设计工具提供了最常用的控件,分别是按钮、复选框、组合框、标签、列表、单选框、多页签、表、文本域、文本框、树、面板、分割栏、主子表和图表,其中最重量级的控件是表和图表,绝大部分的数据集展现工作是这两个控件完成的。初始时,在界面模型的格式设计界面上只有一个面板,处于选中状态,布局是默认的BorderLayout。接下来的工作就是要在这个面板上定制界面。选中需要替换的控件,点击菜单栏〖编辑控件→剪切控件〗,该被替换的控件消失,然后选择控件栏中需要添加的控件,再单击被剪切的区域,则该控件即被添加到该区域。双击界面上的控件就可以打开属性编辑器,可以编辑控件的相关属性。属性编辑器上边是当前界面的控件列表,下面列出了当前选中控件的属性列表。可以从控件列表中选中控件,也可以在界面上双击控件来选中控件进行属性编辑。用友网络科技股份有限公司新一代云ERP解决方案40所有控件都有背景色,前景色,字体和首选大小等普通属性。其次,控件具有一些自己特有的属性,如面板具有布局属性,分割栏有分栏方向,分栏位置等特有属性。下面介绍一下几个主要的控件。展现数据集的最重要的控件—表的几个属性:绑定数据集:可以将表绑定到引用查询中的某一个查询定义,那么在运行态下表展现的就是该查询定义对应得到的查询结果集。当设置了表的数据集绑定属性后,该查询定义中定义的列就相应的出现在表里(此时没有数据只有表头);格式绑定:有时候会对表中的数据展现有各种格式上的要求,如预警显示,精度设置,前缀后缀等等。这时可以设置表的列格式属性,在列格式属性里不但可以设置列绑定的列格式,也可以设置列的显示顺序,显示与否等属性(列格式的定义在后面的小节里专门讲述)。列表头绑定:当表绑定了数据集之后,可以根据展现需要绑定列表头格式,在表头ID属性里绑定表头的ID之后,从界面上就可以看到表的列表头已经绑定到了表头ID对应的表头格式(列表头格式的设计在后面的小节里会专门讲述);行表头绑定:如果表绑定的查询定义里定义了第一类(投影)交叉,则表还可以设置行表头格式。关于行表头的定义和设置在后面小节中讲述。展现数据集的另一个重要控件——图表:用友网络科技股份有限公司新一代云ERP解决方案41在属性编辑器中设置了图表对应的“绑定数据集”属性之后,可以设定图表控件的数据绑定属性。在图表控件上弹出右键菜单点击数据绑定菜单项,可弹出数据绑定设置界面如下图所示。在这里可以设置图表的类型,以及绑定的系列等属性。文本框,文本域,标签等简单控件提供了绑定到多种内容的属性,它可以绑定查询结果集中某列,绑定查询结果集对应的参数,绑定环境变量等等。下面是设置一个文本框绑定到查询参数的截图。用友网络科技股份有限公司新一代云ERP解决方案422)行列格式设计行列格式设计包括列格式定义,列表头定义和行表头定义三部分,分别说明如下。a.列格式定义点击菜单栏〖行列格式→列格式〗,弹出列格式编辑界面。用友网络科技股份有限公司新一代云ERP解决方案43可以定义四种类型的列格式:字符型,数值型,货币型,百分比型,后三种实际上都属于数值型数据的不同展现。格式定义包括对齐方式,文本颜色,前导符号等等。对于数值型的列格式还可以设置保留小数位数,是否加千分位等格式。列格式的一个比较重要的设置就是设置预警显示,预警显示就是将符合指定条件的数据按指定颜色来显示。如销售额这样的数据通过分段预警就很容易体现出高中低来,方便浏览数据。在上图所示界面中点击〖修改〗按钮,〖预警设置〗按钮被激活,点击〖预警设置〗,下图所示预警设置就是将大于2000的数用红色显示。预警条件中除支持用常量表达式进行比较之外,也支持用含变量的表达式进行比较,其中的变量名必须是表中某列的列名。如表中有A,B,C三列,要求.