顾名思义,他表选择就是数据来源于其他表,从其他表选择数据到我们的业务数据中。一个很普遍的例子:我们在维护人员的基本信息时候,需要选择籍贯或者居住地;而籍贯或者居住地本身有一张表来记录,例如 行政区域表;在建立或者维护人员基本信息选择籍贯或居住地时,就可以使用他表选择功能。
在数据库维护中,选择到要设置他表选择的表,并在指定字段上进行设置,设置方法:
在字段的编辑类型中,选择“他表选择”,选择后,右边属性中的 “5、设置”中,打开他表选择设置界面。
他表选择设置主要有 目标数据表,标准,样式,多选,允许自定义输入 这五项。
目标数据表:就是他表选择要设置的SQL语句,数据的来源。
标准:是设置他表选择需要显示哪些数据,需要把他表的那些数据设置到本业务的各字段上。
样式:他表选择时候显示的方式,树形显示还是网格显示等。
多选: 在执行选择的时候是否能够多选。
允许自定义输入:在执行选择的时候,是否可以自己输入他表中没有的数据。
目标数据表设置,有几种方式点击目标数据表设置右边的 … 弹出设置方式
老版本(V15.0.3之前)的版本,点击后是直接弹出“SQL构造器”,即由SQL语句创建。
由SQL语句创建:
“点击由SQL语句创建”,打开下图:
可以直接从平台系统的所有表中选择表,也可以在本项目的所有表中选择表来生成SQL语句,并设置条件,这种构造器界面只能选择一张表。
还可以点击窗体上的“编辑SQL”按钮,打开一个标准的SQL编辑器器,这个里面可以任意写SQL语句,比如多个表联合查询,这种方式可以在pl/sql工具中写好SQL语句复制进去。
本条sql示例语句没有增加查询条件。增加普通条件例如 省市=’北京市’ 这种可以直接设置后直接用,如果增加变量的条件,后面将专门介绍。
设置好语句后点击“保存”,目标数据表设置成功。
从内置业务表创建:
目前可以从已经写好的,能获取组织机构,部门树等业务表中建立目标数据表。如果熟悉度量快速开发平台系统表结构的,也可以完全自己从SQL构造器的方式创建目标数据表。
由扩展服务创建:
在SQL语句不能满足读取数据的情况下,这时可能需要应用到扩展服务,用.net代码编写数据服务接口,进行调用,返回特定的DataTable。需要配置服务名和明星编号,以及可能要传的参数。参见《如何编写数据服务》。
目标数据表设置点确定后,“标准” 下面的网格就出现数据。(注意:如果目标数据表中重新修改,设置了不同的字段,点击保存后,标准中网格中的列未发生变化,请点目标数据表设置右边的x 符号删除目标数据表,重新再设置即可。)
在不修改任何设置的时候,业务运行是效果如下,选择‘区县’字段上设置的他表选择,下拉出现上面设置目标数据表的内容:
选择其中一条数据后。就是下图的效果。
区县中选中了数据为什么显示的是省市数据呢,注意前面 “标准”中的设置,列名称中“省市”后面是否存储勾选上的,并且存储位置是业务功能中的 区县 字段,所以就如同上图显示效果。
“标准”网格说明:
列名称:是目标数据表中查询出来的数据列名称。
数据类型:是目标数据表中查询出来的数据列的类型。
是否显示:在使用的时候,字段是否显示出来,如果不勾选则不显示勾选则显示,例如下图:
排序:是目标数据表的数据显示顺序,如果在SQL业务表构建中已经 order by 好了想要的顺序,这里就不需要设置,如果在排序中设置,下图是排序效果。
快速检索:不设置的情况下,在业务使用中,只能下拉选择数据,如果数据比较多,选择就比较麻烦,这时候快速检索设置就可以利用。下图是在区县字段上设置了快速检索,在业务使用的时候,就可以在区县这个字段中输入关键字,下拉选择出来的数据就只显示满足条件的数据。“左匹配”类似 字段 like ‘徐%’从左起匹配,“包含”只要里面有数据的都显示,类似 字段 like ‘%徐%’。
是否存储:是目标数据表查询出来的数据,各列的数据,是否存储到业务表的字段中,比如我们选择了区县,自动把省市填充到业务表字段中。“是否存储”与“存储位置”是一起使用的如果勾选了存储,但是不设置存储位置,运行时就会出错。
下图是勾选了目标数据表中的三个字段,在区县选择中,选中一条,把这条数据的三个字段数据都存储到业务表中。
下图是勾选了是否存储,没有设置存储位置的错误效果,在下面列出的数据中,选择一条数据后,就报告错误,原因就是设置了这个字段的值要存储,但不知道保存到哪里。
存储位置:是业务表中用来保存目标数据表勾选了要存储字段的位置,一般要注意目标数据表的数据类型,与业务表中要存储字段的类型一致,否则也可能在使用中报错。比如目标数据表的字段是字符,业务表中字段是日期,那使用中就会提示类型不对。
样式设置,主要设置在使用业务时候,目标数据表数据的显示效果。切换到“样式”选项卡上,默认就勾选了“标准列表”。2上面目标数据表数据显示效果都是标准列表样式的效果。
标准列表,标准树型,编码树型三种展现样式,均有各自的属性设置特点,“标准列表”中的树型,是共同都有的树型。
弹出框宽度与弹出框高度:是目标数据表显示数据时候的区域大小。
显示标题:是目标数据表显示数据时是否显示标题,模式是选择的,可以设置不显示。
能否选择:是目标数据表显示数据时是可以可以选择数据到业务数据中,比如要过滤一些数据,可以在能够选择中设置,在能否选择右边 … 点击弹出表达式设置(可以从函数或者活动环节中选择,组成条件),下图示例重庆市的数据能选择,其他地方数据不能选择的效果。
标准树型的关键列与上级列:标准树型样式,是目标数据表数据显示成树型的效果之一,这种树型展示的数据有上下级关系的。例如目标数据表数据如下图:
设置关键列与上级列,显示效果如下图
编码树型的编码值列与编码每节长度:树型样式,是目标数据表数据显示成树型的效果之一,这种树型展示的数据是根据某一列长短来判断上下级的,例如目标数据表数据如下图:
设置编码值列与每节长度,显示效果如下图
勾选上多选,可以把目标数据比较中的多行数据,显示到业务数据中,示例如下:
勾选允许自定义输入,在执行选择的时候,是否可以自己输入他表中没有的数据。如果没有勾选,则只能从目标数据表中选择数据,如果勾选,可以填写目标数据表中没有的数据保存。
在部分业务中,需要对他表选择的数据进行范围控制,比如人员档案编辑中,选择了省市后,再选择区县,区县中的数据要从前面已经写好的省市中过滤出来,不能出现其他省市的区县。即我们设置的目标数据表中的数据,要根据另外字段的值来判断显示范围,方便业务操作。
下图是在“区县”字段上设置他表选择,目标数据表设置的效果:
Where 条件中 省市=[:Var_Province] ,后续在业务使用中,可以给这个Var_Province变量传入具体的省市,就查询出这个省市的区县来。未传值给变量时候,查询数据为空,见下图:
Var_Province变量赋值:
这里我们实现业务是在省市中填写了值,区县中就只显示该省市中的区县。本示例中用到了记录部件,可以在事件管理-字段之变化中来实现:
dim obj= 记录部件1.GetColumnBizTable("设置他表选择的字段名称")
obj.SetVaribleValue("他表的变量名",值)
如果是网格部件,使用方法和效果如下:
其他布局使用方法均类似,只是在不同的业务性质下来对他表选择中的目标数据表变量赋值,也可以查看智能向导中的使用方法。