顾名思义,他表关联就是本表中的数据,与他表有一定的关联关系。从其他表关联数据到我们的业务数据中。一个很普遍的例子:我们在维护人员的基本信息时候,需要选择籍贯或者居住地;而籍贯或者居住地本身有一张表来记录,例如 行政区域表;在建立或者维护人员基本信息中,有一个区域ID字段,保存行政区域表中的ID,后面在人员基本信息中查看行政区域时候,就通过区域ID关联行政区域表中名称字段。这种情况就可以使用他表关联。
再举一个例子,有一张部门表(部门ID,部门名称…),有一张人员表(姓名,性别,年龄,部门ID),我们在对人员表进行编辑的时候,本身表中存的部门ID,但是要显示部门名称,这时候,我们就可以在人员表中的部门ID字段上设置他表关联,关联部门表,把部门表中的部门名称在人员表中显示出来。
在数据库维护中,选择到要设置他表关联的表,并在指定字段上进行设置,设置方法:
在字段的编辑类型中,选择“他表关联”,选择后,右边属性中的 “5、设置”中,打开他表关联设置界面。
他表关联设置主要有 目标数据表,标准,样式,高级设置这四项。
目标数据表:就是他表关联要设置的表,数据的来源。
标准:是设置他表关联需要显示哪些数据,需要把他表的那些数据附加到本业务的各字段上。
显示高级设置:他表关联时候的高级设置,后续将专门介绍。
他表关联没有多选与允许自定义输入,这与他表选择有较大的差异。
目标数据表设置,点击目标数据表设置右边的 … 弹出设置,他表关联只有SQL构造器进行设置,目标表只能从所有表或者本项目中的表选择,目前不能自由编辑组合SQL 语句。
本条sql示例语句没有增加查询条件。增加普通条件例如 省市=’北京市’ 这种可以直接设置后直接用,如果增加变量的条件,后面将专门介绍。
设置好语句后点击“保存”,目标数据表设置成功。
目标数据表设置点确定后,“标准” 下面的网格就出现数据。(注意:如果目标数据表中重新修改,设置了不同的字段,点击保存后,标准中网格中的列未发生变化,请点目标数据表设置右边的x 符号删除目标数据表,重新再设置即可。)
关键值列:就是在业务数据表区域ID这个字段中要保存的数据。
显示值列:设置区域ID这个字段保存数据后,在界面显示的值列。
在不修改任何设置的时候,业务运行是效果如下,选择‘区域ID’字段上设置的他表关联,下拉出现上面设置目标数据表的内容:
选择其中一条数据后。就是下图的效果。
因为显示列值设置的是“区县”,所以在界面使用的时候,我们就在“区县”上下拉他表数据,选择后,业务数据中 区域ID上就保存的关键值列设置的值,注意本来业务数据中只有区域ID这一个字段,没有区县和省市这个字段,现在也显示出来数据了,这两个数据就是他表关联过来的数据,其中一个是显示值列,一个是附件字段勾选的。
“标准”网格说明:
列名称:是目标数据表中查询出来的数据列名称。
数据类型:是目标数据表中查询出来的数据列的类型。
是否显示:在使用的时候,字段是否显示出来,如果不勾选则不显示勾选则显示,例如下图:
排序:是目标数据表的数据显示顺序,如果在SQL业务表构建中已经 order by 好了想要的顺序,这里就不需要设置,如果在排序中设置,下图是排序效果。
快速检索:不设置的情况下,在业务使用中,只能下拉选择数据,如果数据比较多,选择就比较麻烦,这时候快速检索设置就可以利用。下图是在区县字段上设置了快速检索,在业务使用的时候,就可以在区县这个字段中输入关键字,下拉选择出来的数据就只显示满足条件的数据。“左匹配”类似 字段 like ‘徐%’从左起匹配,“包含”只要里面有数据的都显示,类似 字段 like ‘%徐%’。
附加字段:是目标数据表查询出来的数据,各列的数据,是否在该业务中体现出来,比如我们在业务的区域ID上设置的他表关联,还需要在这个业务上显示目标表中另外的字段比如省市,这个字段本身在该业务中没有的。
下图是勾选了省市作为附加字段,所以在业务使用的时候,本身这个业务中没有省市字段,但是也关联显示出来了。
样式设置,主要设置在使用业务时候,目标数据表数据的显示效果。切换到“样式”选项卡上,默认就勾选了“标准列表”。上面目标数据表数据显示效果都是标准列表样式的效果。
标准列表,标准树型,编码树型三种展现样式,均有各自的属性设置特点,“标准列表”中的树型,是共同都有的树型。
弹出框宽度与弹出框高度:是目标数据表显示数据时候的区域大小。
显示标题:是目标数据表显示数据时是否显示标题,模式是选择的,可以设置不显示。
能否选择:是目标数据表显示数据时是可以可以选择数据到业务数据中,比如要过滤一些数据,可以在能够选择中设置,在能否选择右边 … 点击弹出表达式设置(可以从函数或者活动环节中选择,组成条件),下图示例重庆市的数据能选择,其他地方数据不能选择的效果。
注意:能否选择中,设置条件按照SQL的语法写,如果是字符串条件式需要按照下面方式填写:[字段名]=’值’ 不能用 [字段名]=”值” ,即需要用单引号而不是双引号。
标准树型的关键列与上级列:标准树型样式,是目标数据表数据显示成树型的效果之一,这种树型展示的数据有上下级关系的。例如目标数据表数据如下图:
设置关键列与上级列,显示效果如下图
编码树型的编码值列与编码每节长度:树型样式,是目标数据表数据显示成树型的效果之一,这种树型展示的数据是根据某一列长短来判断上下级的,例如目标数据表数据如下图:
设置编码值列与每节长度,显示效果如下图
在部分业务中,需要对他表关联的数据进行范围控制,比如人员档案编辑中,选择了省市后,再选择区县,区县中的数据要从前面已经写好的省市中过滤出来,不能出现其他省市的区县。即我们设置的目标数据表中的数据,要根据另外字段的值来判断显示范围,方便业务操作。
下图是在“区域ID”字段上设置他表关联,并设置变量,目标数据表设置的效果:
Where 条件中 省市=[:Var_Province] ,后续在业务使用中,可以给这个Var_Province变量传入具体的省市,就查询出这个省市的区县来。注意,需要为这个变量传入一个默认值,如果不写默认值,点确定会提示:
Var_Province变量赋值:
这里我们实现业务是在一个文本输入框中填写了省市的值,区县中就只显示该省市中的区县。因为这个变量设置了默认值,在文本框中没有填写内容的时候,就读取满足默认值变量的数据:
在文本输入框中设置值变化事件:
dim obj= 记录部件1.GetColumnBizTable("设置他表选择的字段名称")
obj.SetVaribleValue("他表的变量名",值)
其他部件使用方法均类似。
在“显示高级设置”中,点击显示。
高级设置中有两个参数设置,分别是“字段联动过滤”和 “附加关联条件”,要解释高级设置,可以先从一个实际业务进行介绍。
比如涉及多个账套数据的业务:
仓库基本信息
账套编号 |
仓库ID |
仓库名称 |
仓库说明 |
A01 |
C01 |
平楼木仓 |
平楼木仓 |
A01 |
C02 |
地下室仓 |
地下一层 |
A02 |
C01 |
平楼木仓 |
平楼木仓 |
A02 |
C02 |
地下室仓 |
地下一层 |
现在要对物资进行入库,不同账套的物资入到相应账套的仓库中。
物资信息表:
ID |
物资名称 |
物资数量 |
账套编号 |
仓库ID |
10293 |
办公桌 |
2 |
A01 |
C01 |
10294 |
打印机 |
1 |
A01 |
C01 |
10295 |
书架 |
2 |
A01 |
C02 |
10296 |
A4打印纸 |
4 |
A01 |
C02 |
10297 |
办公桌 |
2 |
A02 |
C01 |
10298 |
打印机 |
1 |
A02 |
C01 |
10299 |
书架 |
2 |
A02 |
C02 |
10300 |
A4打印纸 |
4 |
A02 |
C02 |
如果我们在账套A01下工作。在查看物资的时候,仓库ID字段他表关联设置,关联出“仓库基本信息表”中的仓库名称。设置如下:
在目标数据表中,不设置变量,没有高级设置,其实现原理SQL如下:
Select a.*,b.仓库名称,b.仓库说明 from 物资信息表 a, 仓库基本信息 b where a.仓库ID=b.仓库ID |
如果我们要查询物资ID=10293的物资所在的仓库,那根据上面数据来看。A 表ID=10293的数据仓库ID是C01,仓库基本信息表中有两个编号为C01的数据分别属于不同账套,那查询出来10293物资的数据就会出现两条。
这时候,我们就可以通过高级设置中的附加关联条件才设置并控制条件,避免出现一对多数据。
附加关联条件设置:
下图在附加关联条件中,再设置了 {物资信息表}.账套编号 = {仓库基本信息}.账套编号 。我们也可以在附加关联条件中进一步设置多个条件,可以是and 或 or 连接。
设置好附加条件后,整个SQL实现原理如下:
Select a.*,b.仓库名称,b.仓库说明 from 物资信息表 a, 仓库基本信息 b where a.仓库ID=b.仓库ID and a.账套编号=b.账套编号 |
这样我们再查询物资ID=10293的物资所在的仓库时候,就多了一个条件来控制,查询出来的数据就准确。
字段联动过滤设置:
这个与目标数据表中设置变量使用的效果类似,参见3.1。例如我们在新增一条物资信息的时候,选择好套账,然后再他表关联选择仓库时候,他表关联中的数据来源就是该套账下仓库基本表中的仓库信息。下图就是设置的目标数据表(即他表关联中的他表 中的账套编号等于 物资信息表中已经确定的账套编号值)。
字段联动过滤设置中,主表字段中的[账套编号],其实可以看成是一个变量,只是这个变量的值,就是主表中的一个字段,不需要单独对变量赋值。字段联动过程设置后效果: