ncv5-查询引擎技术红皮书_第1页
ncv5-查询引擎技术红皮书_第2页
ncv5-查询引擎技术红皮书_第3页
ncv5-查询引擎技术红皮书_第4页
ncv5-查询引擎技术红皮书_第5页
已阅读5页,还剩127页未读 继续免费阅读

下载本文档

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

文档简介

查询引擎技术红皮书

NC-UAP5.0

用友

2015-04-10

目录

第一章前言............................................1

1.背景.....................................................1

2.入门.....................................................2

3.小结.....................................................8

第二章对象管理........................................9

1.对象树...................................................9

1.1对象编辑.............................................................9

1.2对象导入导出........................................................10

2.数据源...................................................11

3.首选项...................................................14

4.资源权限.................................................15

第三章查询模型.......................................16

1.参数控制................................................16

2.SQL设计................................................19

2.1数据字典............................................................19

2.2向导设计............................................................20

2.3手工设计............................................................25

3.数据交叉................................................27

3.1投影交叉............................................................28

3.2旋转交叉............................................................31

4.代码嵌入................................................36

4.1SQL整理............................................................36

4.2数据加工............................................................38

4.3穿透规则............................................................42

5.查询执行................................................48

6.查询集成................................................50

6.1复合查询............................................................50

6.2物化查询............................................................51

6.3合并查询............................................................53

7.数据权限................................................53

第四章格式模型........................................55

1.引用查询................................................56

2.格式设计................................................57

2.1控件管理............................................................57

2.2属性绑定............................................................64

第2页

2.3行列格式设计........................................................66

2.4预定义数据处理.......................................................................................................69

3.报表浏览.................................................76

3.1界面初始化..........................................................76

3.2数据处理............................................................78

3.3控件连动............................................................82

3.4报表打印............................................................83

第五章报表发布........................................86

1.发布为功能节点..........................................86

1.1手动挂接................................................................86

1.2向导发布................................................................87

2.轻量化报表展现...........................................89

第六章插件开发.......................................94

1.生成插件................................................94

2.设计插件................................................100

3.管理插件................................................100

4.开发小结................................................101

附录....................................................102

1.查询引擎FAQ之参数篇..................................102

2.交叉表的使用样例........................................103

3.查询与格式对象安装盘预置方案............................109

4.查询引擎V5新特性......................................109

5.查询引擎报表联查业务节点应用方案........................110

6.查询引擎与三大模板集成方案..............................115

7.基于QE底层的查询个性化设计方案........................123

8.个性化控制类(JAVADOC).............................................................128

第3页

第一章前言

查询引擎(QueryEngine,简称QE)的功能定位是,一个面向高级实施人员和专业开发人

员的查询建模产品,可以全面支持复杂查询的设计和个性化的报表展现。

1.背景

查询引擎在功能流程和查询模型方面参考了其前身产品“自定义查询”的理念,在界面设计

方面汲取了FormDesign的思路,同时融入了DW的技术,并依赖于通用的NC数据字典。

(1)自定义查询:NC于2000年开始研发的一个面向中级实施人员和二次开发人员的查

询报表工具,由查询管理中心、报表格式设计、报表浏览、报表权限控制和数据加

工厂几个模块构成,此工具首次提出了基于数据字典来管理数据并建立查询对象的

思路,能够提供比较丰富的查询分析、数据加工和报表展现功能。

(2)FormDesign:NC于2003年开始研发的一种界面开发模式,定位于支持功能建模。

(3)数据字典:一种管理数据库逻辑结构的机制,存在于物理数据库和用户接口之间。

NC于2002年开始研发数据字典,最开始只用于自定义查询,后来经过功能强化和

逐步推广,成为现在的DDC(DataDictionaryControl)»其功能包括数据库对象的管

理与编辑、数据字典的解析生成等。

(4)数据仓库:NC的一个独立产品,能够按照指定的入仓规则从多个业务数据库抽取

数据,并通过入仓服务定期把数据加我到数据仓库。

产品的需求背景如下所述。

(1)复杂查询报表的需求:在实际的业务查询中,开发人员经常会遇到以下一些棘手的

问题——复杂的SQL,从不同的查询条件得到完全不同的查询结果,查询结果的复

合,业务逻辑代码和大量数据加工算法的介入,各种各样的数据交叉和数据处理手

段等等;在展现格式方面,通常要求灵活、友好、可视化、个性化的设计界面,丰

富的展现控件和统计图表,依据数据对单元格、列表头和行表头的格式进行设置,

表单控件之间的连动等等。这一切都对早期的查询报表工具提出了艰巨的要求。

(2)二次开发的需求:随着NC对行业用户的拓展,由业务组程序员在通用软件中针对

每个查询报表需求进行开发的方案已经变得不太现实,一线人员越来越频繁的面临

来自用户的个性化报表实施压力。实施团队迫切要求一个强大而且易用的二次开发

工具,尽管功能的强大和易用往往存在着一些矛盾。

(3)工具整合的需求:自定义查询在推出后,在实施中得到了一定的应用,但局限于出

复杂程度不太高的查询报表。IUFO是公司的传统报表产品,它更偏重于报表的管理

方面,比如报表的发布、审核、校验等等。数据仓库使查询的应用由单数据源拓展

到了多数据源,并且提供定时同步业务数据的功能。为了有效地实现资源共享,结

合发挥各个工具的优势,NC决策层一直在推动相关产品的整合。

(4)查询分析软件发展潮流的需求:近几年来,查询分析、数据挖掘、商业智能的研究

不论在企业应用还是在学术领域都成为热点,ERP软件的数据建模和查询建模功能

已经成为代表产品水平的重要指标。

第1页

2.入门

现在让我们来看一个最基本的查询样例,作为入门,我们知道在任何ERP系统中都存在公

司和用户的概念,下面我们做一个查询某公司下用户的查询。

1.进入客户化今自定义查询玲查询引擎管理界面

图-1

2.在“查询设计”树下新建一个目录,“jl测试用例”,并在这个目录下面创建一个查询对

象一一用户查询。

第2页

或辑.查画模叁,浏宽随Ji通胁功能,工R化,

查询引擎

查*十雄性

♦uUAPBDlusetqueiy

-八厮X用网循尸查0

-,?!单遮国关报表

图公司查询

明用户关裁公司查询

,落E1*

♦功威权阳查诲对象

O格式设计

♦UAPBD

♦jiaea用例

上_功W限查源格式

开发%发

图--2

3.选择参数定义,这里我们定义一个名为corp,显示名为“公司”的参数,注意这里的数

据类型选择编码参照,枚举项中选择这个编码参照的类型,我们将根据这个参数选取的

值来确定待选公司,并且在查询中根据这个参数选取的值来进行结果筛选。

图--3

4.制作查询定义,制作一个查询定义的具体流程实际上就是为了生成一条SQL语句,查

询数据源去获取数据,但是这个生成SQL语句的过程被我们用图形化界面代替了,用

户只需要了解基本的SQL规则就可以了,无需亲自手动去写纷繁复杂的SQL语句,同

第3页

时我们也支持手工SQL。

图--4

用户可以通过增加表来增加数据字典中的数据表,也可以点击临时表引用前面做好的查询定

义对象,引用查询定义对象相当于设计了一个复合查询,关于复合查询的定义参见第二章第

六节查询集成。这里我们选择增加表来增加一•个sm_user表,这张表里面存储的是NC系统

的用户信息。

图--5

在选择字段页签下选择“用户名”等字段,这里的字段表达式可以是某表的字段,也可以是

字段的运算或者函数处理表达式,例如:len(sm_user.user_name),就是代表user_name这个

字段的字符串长度。显示名可以是用户自定义的字符串,将来显示在报表的列表头区域。

第4页

图--6

前血我们提到这个查询必须按照公司为条件,过滤查询出来的用户,实际上就是为SQL语

句生成一个where条件,我们支持两种条件,固定和待定,顾名思义固定条件写好之后就不

能变化,而待定条件是跟参数设置相关的,可以根据用户输入参数变化。我们在这里选取待

定条件,用户表的公司编码字段等于前面我们设置过的corp。关于查询定义的设计后面的章

节将有更详细的论述,这里只介绍最基本的功能。

5.制作格式设计

第5页

图-7

新建格式设计文件夹以及对象的方式与新建查询对象的方法一样,这里略去不讲。生成新的

格式设计对象之后可点菜单中的界面模型玲引用查询,来绑定我们刚才做好的查询设计对象

“用户查询”。

图-8

选取刚才做好的查询之后我们在点击界面模型少格式设计,这里可以选取我们预置的儿种界

面模型之一,例如这张表我们选取表头+表体格式。

图一9

最后点菜单中的浏览,让我们浏览一下制作出的第一张报表,

第6页

图--10

点浏览之后我们会看到一个选择参数的对话框,在这个参数对话框中我们可以设置自己的参

数值,比如我们选取sunny_corp这个公司,点确定,则可以浏览这个公司下的所有用户,

如下图。

公司阳秘港公司

用户名遇害代码切时间失效时向认证方式用尸箱迷公司■码

1而~81mpehn2006-09-16ttabcpwd至事?1001

1001I

2苒球员工slmpchn2006-09-16slaticpwtf________市场与器

图一木

选择表头区域的公司参照,我们可以浏览不同公司下的用户。至此一个最简单的自定义查询

已经制作完毕,我们可以将做好的查询作为独立节点发布到NC系统下供用户使用。

第7页

3.小结

在本章中我们介绍了查询引擎的发展历史以及产品的需求背景,通过一个入门样例,让用户

初步了解了查询引擎的基本功能,在后面的章节中我们将详细介绍查询引擎的各项功能,并

通过一些样例使得用户能够使用本产品进行快速便捷的二次开发。

下图是对查询引擎整体应用架构的一个示意。

______rtr田曰________________________________________________________________________________________________________________________________

图-12查询建模体系

第8页

第二章对象管理

1.对象树

查询引擎的管理调度功能由主界面完成,主界面左侧为一棵对象树,树上挂有代表查询对象

和界面对象的节点,右侧为显示当前选中对象基本属性的属性框。

m功电,ixt-

查询引擎管理日LJ唱Q,•

母性

・_i.nrasx

♦2、交叉类报表

3c33.投影5?报表

4.曾法奂报表

♦5、报表宓级应用

王蒋磊测试

格式没计

•1.查询类报表

十2、交叉夷报表

3。3、投H类报表

・4.篁法类报表

f:5、报表奇孤史用

自M地

图二-1管理调度主界面

•对象树(ObjectTree):对象树是一个支持层次管理的数据结构,它维护自身的加载、

存储和节点的目录管理,每个节点的信息主体存储在数据库的一个BLOB字段中。对象树上

的节点通常分为目录(Folder)和对象两类,并支持快速定位(在树获得焦点时用ctrl-f

快捷键可弹出查找对话框,支持按编码或名称来模糊查找)o

•属性框(Objectinspector):一个自动显示对象的属性和取值的控件,取值部分会根

据属性的数据类型采用不同的渲染器来展示,不同的编辑器来编辑。

1.1对象编辑

目录的编辑操作如下:

(1)增加/删除/修改:在根节点或目录节点之下可以增加目录,删除目录时会删除目录下

第9页

的所有对象。目录的可修改属性为目录名称。同一目录下的目录和对象不能重名。

(2)复制/剪切/粘贴:在查询子树或格式子树下,可以将一个目录及其下属内容从某位置

拷贝或移动到另一个位置。

对象分为查询对象和格式对象,其编辑操作如下:

(1)增加/删除/修改:在根节点或目录节点之下可以增加查询对象或者界面对象。前者的

属性为编码、名称和数据源,后者的属性为编码和名称,其中编码一经使用,就不

再建议作任何修改,因为此编码可能被其它对象引用。请注意对象的唯一标识是编

码而不是显示名称,一个查询对象或是格式设计对象可以有多个显示名称但是只能

有唯一的编码。

(2)复制/剪切/粘贴:在查询或格式子树下,可以将一个对象从某位置拷贝或移动到另一

个位置。请注意这里的复制粘贴都是在同一棵树F的,如果复制格式设计对象到查

询对象树下则会出错。

1.2对象导入导出

(1)导出:选中某个对象,可将其导出为XML文件,文件里描述了对象的所有信息;

也可选中某个目录,将该目录下所有的子目录和对象都导出到指定位置(保持原有

的目录级次)。

(2)导入:在选中某个目录之后,导入功能可用。导出的XML文件,可以导入到当前

目录下。此功能可用于对象的跨数据库复制。导入时,我们可以选择单个文件,也

可以选择一组文件或目录,导入后会保留原目录的级次结构。需要注意的是:

•在导出查询对象或界面对象时,需将其引用的查询对象-并导出才有意义;

•导入不能违反对象主键及名称的唯一性约束。下图显示了某查询对象所导出的

XML文件。

第10页

,5C:\Docu*entsandSettings\yangxiong\桌面,人员详的信息.-XicrosoftInternetExplorerSB®

文件电)编辑⑥查看也)收藏④工具Q)希助国)

。后退­区]闾;/搜索☆收藏夹e•一々,O烈鸟闻壮

地址①)C:'DocumentsandSettings\yangxlong,桌面、人员详细信息.xml▼转到

A

<?xmlversion="1.0"encoding="gb2312"?>

-<QueryModelDef_Root>

<QueryModelNodeDisplayName="Awff^^^"GUID="3eebcdfdef99a486"ID="pen_psndetail"

ParentGUID="9blacfdeb6aleO8"kind="Query_Moder'/>

-<QueryModelDefcreateInfo="ncO723$OOO1"dsName="rt0709">

-<m_params>

<nc.vo.pub.querymodel.ParamVOconsultCode=""dataType="O"iflnvisible="false"ifMust="N"

m_isDirty="false"operaCode=""paramCode="psncode"paramName="人员编码"

refDepend=""value=""/>

<nc.vo.pub.querymodel.ParamVOconsultCode=""dataType="Ouiflnvisible="false"ifMust=BN"

m_isDirty="false"operaCode=""paramCode="psnclassname"paramName="人员分类名称"

refDepend=""value=u"/>

</m_params>

-<m_qbdsName="rt0709"m_isDirty='false"m_note=""m_pkCorp="OOOl"

m_temptablename="TEMQ_pen_psndetail">

-<m_selectFlds>

<SelectFldVOcoltype=M12"expression="bd_psndoc.psncode"fldalias="psncode"

fldr)ame="人员编码"m_isDirty="false"note=""precision="25"scale="O"/>

<SelectFldVOcoltype="12"expression="bd_psndoc.psnname"fldalias="psnname"

fldname="姓名"m_isDirty="false"note='"'precision="25"scale="O"/>

<SelectFldVOcoltype="12"expression="bd_accpsndoc.sex"fldalias="sex"fldname="性别”

m_isDirty="false"note=B"precision="2O"scale=",On/>

<SelectFldVOcoltype="12"expression="bd_psncl.psnclassname"

fldalias="psnclassname"f1dname="人员分类名称"m_isDirty="false"note=""

precision="2O"scale="O"/>

⑥完毕i我的电脑

图二-2导出XML文件

(3)在导入导出的过程中需要注意的一个问题是数据源的问题,在实际应用中经常出现

这样的场景:实施人员在自己的环境(数据源为home)下做了一对查询模型设计和

格式设计,然后导出这一对设计对象为xml文件,然后到用户的环境(数据源为

customer)下执行导入,发现无法查出数据,并且提示“找不到查询所用数据源”,

这是因为导出成XML文件的时候,记录在XML文件中的执行数据源是home,而

客户的数据源名称是customer,与查询模型设计中的数据源不符合,这样查询模型

就无法到正确的数据源下去取数,可以在弹出的提示框“是否修改执行数据源为当

前数据源”,选择“是”,则该查询设计模型的数据源被修改为当前账套的数据源,

这样就可以在客户的数据源中正确取数了。

2.数据源

查询引擎的数据源关系如下图所示:

第11页

图二-3查询引擎数据源关系模型图

•多数据源运作机制:查询引擎支持这样的模式一一NC业务在数据源A下运行,查询引

擎的定义放在数据源B,通过引擎定义的查询可以到数据源C去执行。

注:只有数据仓库下的查询引擎有切换定义数据源和跨库查询的功能,客户化下的查询引擎

只能查询当前账套数据源的数据。

图二-4切换定义数据源

•各种数据源的概念区分:

业务数据源(上面说的A)通常指当前登录账套的数据源,是NC运行所需要的业务数据源。

定义数据源(上面说的B)是指查询引擎自身的系统表所在的数据源,执行切换功能后,主

界面上的对象树的内容会作相应改变。请注意查询引擎自身的系统表可以和当前的业务数据

源不是同一个数据源,例如当前登陆账套是Account1,数据源是datasource1,而查询引擎

的系统表可以不在该数据源下,而在另一个数据源datasource2下,datasource2可能是账套

Account2的数据源,也可能是任何其他的数据源。但是前提是该数据源中必须含有查询引

擎自身的系统表。

第12页

图二-5切换定义数据源效果

执行数据源(上面所说到的C)是指该查询定义取数的数据源,我们知道查询定义设计的最

终目的还是去特定的数据源查取用户所需的数据,执行数据源就是存储这些用户所需数据的

数据源,查询引擎本身的系统表所在数据源可以跟这个取数数据源不同,也就是说定义数据

源和查询数据源可以分离。

用反ERP-M集团尊戈,您好!2006-09-12快走吗^

>.快透切换JB«“•

图二-6执行数据源

第13页

3.首选项

QE数据源的配置在V5.0版本中统一放在查询引擎环境变量设置(又称首选项)这个节点

里面,该节点位于客户化少二次开发工具分自定义查询下,界面如图2-6所示:

图二-7查询引擎首选项管理

这个节点存放查询引擎运行所需要的环境变量或者首选项变量,这些变量被存储在后台

queryengine.xml中,位于nchome/ierp/bin目录下,山于本文下面的章节中还有需要涉及到环

境变量设置的地方,所以这里只提及数据源环境变量的设置。

/有效数据源:

启动中间件时的所有能够连接的合法数据源,实际上也就是prop.xml文件中的所有定义过

并且能够正常连接的数据源。

/查询执行可用数据源:

查询引擎所能够引用的执行数据源列表,查询引擎管理中所有的查询模型的取数数据源范围

就在这个列表中定义。请注意一个查询执行数据源必须是一个有效数据源。

/数据加工数据源:

查询引擎中高级功能“数据加工”所使用的数据源,二次开发人员需要特别注意在使用数据

加工这个功能时,在获取数据源的时候有如下语句:

getEnv().getDefaultDsn();

这句话返回的就是在这里定义的“数据加工默认数据源”。V5版本支持多种数据加工数据源,

这里定义的时在默认情况下的数据源,下表列出在各种查询引擎版本下的数据加工数据源及

其含义。

第14页

版本号对应数据源及其含义

LOGIN查询引擎单数据源版本,数据源为当前登陆

账套数据源

Default默认数据源,在查询引擎环境变量设置中显

式定义的数据加工默认数据源

DW查询引擎的DW版本,数据源为查询引擎环

境变量中定义的DW数据源

BPM查询引擎的BPM版本,数据源为查询引擎环

境变量中定义的BPM数据源

QMD查询引擎多数据源版本,数据源为查询对象

设计中查询对象的数据源

表二-1

首选项配置的内容还包括数据仓库应用的一些配置,以及界面操作过程中的与个性化或性能

相关的设置,比如后面会提及的查询执行的最大行数限制等等。首选项对应的配置文件

是%]^0^10乂£%电印\1)由十14©「丫6咤访6次1111,是被全集团共享的。

4.资源权限

单数据源版查询引擎支持对不同公司的不同用户授予全部权限或浏览权限。全部权限是指所

有查询、格式对象的设计和浏览权限,浏览权限是指能够浏览指定格式对象的报表展现。

图二-8查询引擎权限分配

如果想做更细粒度的资源权限控制,比如建立基于创建者的权限体系,或者对查询设计者的

可查数据字典进行限制,则需要通过下文介绍的管理插件和设计插件技术进行开发。

第15页

第三章查询模型

查询模型的定义包括参数定义、SQL设计(含交叉定义)、SQL整理、数据加工、穿透规则

等几部分,其中穿透规则描述的是本查询与外部查询的通信关系,剩余部分都用于描述查询

内部的属性。查询引擎的查询模型(数据模型)设计如下:

图三-1查询模型示意图

1.参数控制

参数是查询模型中代表动态信息的元素。在SQL设计、SQL整理和数据加工中,均可以根

据参数的不同,对查询的定义和执行进行调整。

第16页

过滤型参数:如果创建某个参数的作用是根据其取值的不同改变WHERE条件的设置,则

这类参数成为过滤型参数,这是最常用的参数功能(参数的FAQ可以参见附录)。

(1)参数定义:用于定义本查询内部引用的所有参数,其中参数名要保证互不相同。

数据类型包括自由录入、枚举、参照几种,当类型为枚举时,枚举项为用“@”

分隔的枚举值,或者是一个单字段的查询SQL;当类型为参照时,枚举项为基

础参照名,或者是用尖括号括起的自定义参照的类名。

致开发者:在V5.。中该类应该放置在client以上的包中,对于放置在private中的类,

则会抛出ClassNotFoundException

(2)参数引用:参数可在SQL设计的筛选条件页签引用,也可在SQL整理或数据

加工的嵌入代码中利用编码向导引用。这里当筛选条件是待定条件的时候,双

击“值”,文本框,就可以弹出参数选择对话框,点击选择对应的参数即可。

(3)参数设置:运行态要求用户首先对参数进行设置,这与查询模板的使用类似。

当报表引用了多个查询时,参数将通过多页签设置,每个页签代表一个查询。

图三-3参数定义

第17页

图三-4参数引用

图三-5参数设置

替换型参数:是指参数名以#开头并以#结尾的参数,多用于手工SQL设计中,也可用于向

导SQL的非待定条件部分。这种参数通常相当于preparestatment中的?占位符,关于替换型

参数,后面的章节中还有详细介绍。在设置替换型参数的时候,不输入值将不被认为是忽略

此参数对应的条件。

第18页

2.SQL设计

SQL设计包括向导设计方式和手工设计方式,无论采用哪种,在完成设计时系统均会对SQL

进行合法性校验,如未通过校验则不能保存设计。作为向导设计的个重要组成环节,我们

有必要先介绍一下数据字典。

2.1数据字典

前面已经提到过,查询对象的属性中包含数据源信息,因此在设计查询的时候需要加载相应

数据源的数据字典。我们知道,NC的数据库以DDC作为数据字典,但非NC的数据库则

没有DDC,此时,系统会根据执行数据源是NC、IUFO或其它数据库三种情况分别加载不

同的数据字典,而且这一机制已经预留了扩展的接口,其目的就是可以面向各种类型的数据

库执行取数功能。

NC数据字典提供了统一的数据建模平台,支持对各种数据库对象进行管理,维护这些物理

对象的逻辑属性,并向外系统提供访问数据库逻辑信息的接U。以查询引擎为例,查询对象

的定义是基于数据字典进行的,而这份数据字典来自查询对象所指定的数据源。由于多数报

表的列与业务数据库的字段存在某种对应关系,因此数据字典的存在有助于提高查询定义的

直观性和易用性。

第19页

图三-6NC数据字典

NC数据字典通常在安装产品时候由系统生成,如果想自己为某些数据库对象生成字典,可

以采用数据字典管理界面提供的导入方法。导入方式包括三种(详细操作可参见《数据字典

导入说明》):

1、解析PDM文件(xml格式);

2、解析NC标准建库脚本;

3、提取数据库元数据;

如果需要给非NC数据库(比如用户采用的第三方数据库)生成数据字典,可以利用

PowerDesigner提供的逆向工程功能将库里的物理表生成PDM文件,修改其中表和字段的

中文名称,然后以xml文件格式存储,再使用上述第一种方法导入。

查询引擎中用到的数据字典都以•棵对象树的形式存在,树节点包括目录、表、视图、字段、

外键等信息,通过双击对象节点可以协助录入SQL语句的成分。

2.2向导设计

向导设计参考典型SQL的构成规则,充分利用数据字典的功能,引导用户一步步完成SQL

的设计,因此是推荐使用的方式。它由以下六个环节构成,其中最后一步“交叉属性”超出

了SQL的涵义,我们在后面的专门章节中进行介绍。

(I)表定义:即SQL语句中的from部分,可以利用数据字典选择库里的数据表,

也可以选择查询对象,从而实现查询的集成(基于查询结果定义新的查询)。

图三-7表定义

第20页

图三-8增加表(物理表)与临时表

(2)连接定义:即SQL语句中的join部分(表间连接关系),支持典型模式和高级

模式,典型模式实际就是关系数据库中的单键连接,连接字段只有•个,并且

操作符都是常见的'=><',而高级模式可以自由设置连接表达式,支持多键连

接。

图三-9连接定义)典型模式

第21页

图三-10连接定义)高级模式

(3)字段定义:即SQL语句中的select部分,可以定义任何SQLSERVER语法支持

的查询表达式,但要保证字段别名不重复且使用规范名称(以字母开头、由字

母、数字、下划线组成的字符串,且不能使用SQL保留字)。如果使用了聚集

函数,则山系统自动完成groupby部分。V5中增添了这样的功能,可以在查询

字段中添加NC的公式,但是这些公式需要特定的格式,例如取得前台数据库

缓存中某表的一个或多个字段,可以使用'{getColvalue(xx,yy,zz)「,请注意单引

号和大括号是必须的。这里的处理机制是先将上述公式作为一个字符串,在查

出结果集之后再把公式翻译执行。所以这里的公式是基于最终结果集的。

第22页

图三-11字段定义

图三-12表达式生成器

(4)筛选条件定义:即SQL语句中的where部分,可定义确定条件和待定条件。如

果是待定条件,在值编辑框获得焦点时双击编辑框可弹出参数界面并作引用(或

者在值编辑框获得焦点时按F12键或者双击弹出参数引用框);如果是固定条

件,在值编辑框获得焦点时按F11键或者双击可弹出环境变量引用框,按F12

键可弹出所引用的基础数据表的参照。

对于在查询字段里使用了聚集函数的SQL设计,筛选条件可能需要使用having

子句。Having页签默认是隐藏的,可以在查询定义框的南部面板按Ctrl+Shift+

鼠标左键弹出隐藏的Having页签。

第23页

至查询定义凶

选择表连接条件选择字段筛选条件!排序字段交叉属性

@典型模式o高级模式

关系符*一几操作符值待定条件

表子鼠

1where凭证表删除标志=0

2and凭证分录删除标志=0I-I

3and凭证表合计年度=|year&0

4and凭证表会计期间>=beginperiod'

5and凭证表会计期间<=endperiod

上一步II下一步1I确定]I取消

图三-13筛选条件定义(典型模式参见图3-3)

(5)排序字段定义:即SQL语句中的。rderby部分。

图三-14排序字段定义

(6)向导设计完成后在查询定义框的南部面板鼠标双击可弹出向导生成的等效SQL

(待定条件全用(1=1)代替)。该功能可以用来检查SQL语句是否有错。实际上,

每次做完查询设计之后点击确定时,我们都会试执行一下您的SQL语句,但是

并不查出数据来,如果您的查询设计最终生成的SQL语句有问题,那么就会有

相应的出错提示。

第24页

图三-15由查询设计生成的SQL语句

(7)数据交叉属性:交叉是一种常用的多维数据分析手段,详见后文。

2.3手工设计

手工设计是支持自由SQL的方式,由于复杂SQL在解析、适配、执行等方面的不稳定性较

大,因此不推荐普通用户使用。手工设计分为以下两个环节:

1)SQL录入:用户可以在数据字典的辅助下录入SQL语句,要求遵循SQLSERVER语

法。如图3-13,注意,我们在SQL定义里用到了一个替换型参数(#pk_corp#),这

里替换型参数也必须在前面参数定义中定义,并且参数名要以#开头并且以#结尾。(关

于替换型参数的具体说明参见附录);

第25页

图三-16SQL录入

2)SQL翻译:实际上最终到数据库中执行的SQL语句都是经过翻译的,NC系统有专

门的SQL翻译器对各种SQL方言进行翻译,在手工设计中可以选择是否启用翻译器

这个功能,通常建议启用。

图三-17SQL录入

3)字段显示名设置:系统通过对用户录入SQL的解析获得字段信息,并向用户提供输

入字段显示名的机会,显示名的默认值与查询字段的物理名相同。

图三-18字段显示名设置

第26页

3.数据交叉

什么叫做数据交叉?在怎样的场景下需要用到数据交叉?让我们来看两个应用场景:

1.我们从数据库的原始数据表中经过连接得到这样一个结果集,该表共有三行三列,现在

我们想得到部门的员工民族统计表,

图三-19

下图是我们想要得到的最终结果:

图三-20

我们知道这样的查询实际上是不能通过SQL语句来实现的,因为通过SQL语句查询出来的

列中不可能存在像汉族,满族,蒙古族这样的列,这些数值是原始数据库表中某列中的值。

但是这个功能我们可以通过投影交叉来实现。

2.还是刚才那个例子,我们现在想要得到的结果需要按照民族列中的民族数动态扩展,也

就是说,不能只有汉族,满族,蒙古族这些固定好的值,如果添加了一笔数据,民族的

值为苗族,我们最终的报表能够动态的呈现出这样的变化,理想中的结果如下图所示:

第27页

凭查询结果预览(共18行5列)区

汉族满族亩族蒙古族

部门名称人数合计

人数人数人数人数

ERP生产制造产品部1010A

ER囹务产品部1414

HR事业部11

HR产品市场部44

HR产品开发部20323

HR服务支持部55

人力资源部718

商务部22

总裁办1121216

直属职能部门11

维修部11

行政部617

财务部527V

交叉「I1导出关闭

图三-21

实际上这样的例子可以用旋转交叉来实现。下面我们要分别介绍这两种交叉功能。

3.1投影交叉

•投影交叉(第一类交叉):假定有一个查询SQL,其查询结果是单行单列的汇总值,另外

还有两组WHERE条件的序列,分别为横向序列(whereX

温馨提示

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

评论

0/150

提交评论