NC5自定义查询用户手册new

发布时间 : 星期一 文章NC5自定义查询用户手册new更新完毕开始阅读

17.6.1.2查询模型设计

查询模型设计包括参数定义、SQL设计(含交叉定义)、SQL整理、数据加工、穿透规则等几部分,其中穿透规则描述的是本查询与外部查询的通信关系,其余部分都用于描述查询内部的属性。查询设计态和运行态的基本流程如下图所示:

图17-9查询模型流程

(1) 参数控制

参数是查询模型中代表动态信息的元素。在SQL设计、SQL整理和数据加工中,均可以根据参数的不同,对查询的定义和执行进行调整。如果创建某个参数的作用是根据其取值的不同改变WHERE条件的设置,则这类参数成为过滤型参数,这是最常用的参数功能。

参数定义:用于定义本查询内部引用的所有参数,其中参数名要保证互不相同。数据类型包括自由录入、枚举、参照几种,当类型为枚举时,枚举项为用“@”分隔的枚举值,或者是一个单字段的查询SQL;当类型为参照时,枚举项为基础参

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

图17-10参数定义

参数引用:参数可在SQL设计的筛选条件页签引用,也可在SQL整理或数据加工的嵌入代码中利用编码向导引用。

图17-11参数引用

参数设置:运行态要求用户首先对参数进行设置,这与查询模板的使用类似。当报表引用了多个查询时,参数将通过多页签设置,每个页签代表一个查询。

图17-12参数设置

(2) SQL设计

SQL设计包括向导设计和手工设计两种方式。无论采用哪种,在完成设计时系统均会对SQL进行合法性校验,如未通过校验则不能保存设计。作为向导设计的一个重要组成环节,有必要先介绍一下数据字典。 ? 数据字典

前面已经提到,查询对象的属性中包含数据源信息,在设计查询的时候需要加载相应数据源的数据字典。NC的数据库以DDC作为数据字典,但非NC的数据库则没有DDC。系统会根据执行数据源是NC、IUFO或其它数据库三种情况分别加载不同的数据字典,而且这一机制已经预留了扩展的接口,从而可以面向各种类型的数据库执行取数功能。

?

关于数据字典的生成有多种做法,可以参考DDC的专门文档。查询引擎中用到的数据字典都以一棵对象树的形式存在,树节点包括目录、表、视图、字段、外键等信息,通过双击对象节点可以协助录入SQL语句的成分。 向导设计

向导设计参考典型SQL的构成规则,充分利用数据字典的功能,引导用户一步步完成SQL的设计,因此是推荐使用的方式。它由以下六个环节构成,其中最后一步“交叉属性”超出了SQL的涵义,在后面的章节中进行专门介绍。 ? 表定义:即SQL语句中的from部分,可以利用数据字典选择库里的数

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

图17-13表定义

图17-14数据表与临时表

?

连接定义:即SQL语句中的join部分(表间连接关系),支持单键连接和多键连接两种模式。

图17-15连接定义

?

字段定义:即SQL语句中的select部分,可以定义任何SQLSERVER语法支持的查询表达式,但要保证字段别名不重复且使用规范名称(以字母开头、由字母、数字、下划线组成的字符串,且不能使用SQL保留字)。如果使用了聚集函数,则由系统自动完成group by部分。

图17-16字段定义

?

图17-16表达式生成器

字段表达式定义:

下面作些特殊函数的用法说明。 如其它函数:CASE WHEN的用法

如某查询定义中,当科目表中的字段“余额方向”为1时,需将查询中的字段“余额方向名称”(如字段别名为name)值显示为”借”,否则为”贷”。

则字段表达式为case when bd_accsubj.balanorient=1 then '借' else '贷' end

操作方法:双击“其它函数”中的CASE WHEN,则在字段表达式中生成:

case when then else end,然后在字段表达式的编辑框中继续手工编辑成完整表达式:case when bd_accsubj.balanorient=1 then '借' else '贷' end,然后按“确定”。

联系合同范文客服:xxxxx#qq.com(#替换为@)