需求背景

在一般使用过程中,下拉框、单选搜索框等数据选择控件所绑定的CodeTableEasySearch对象由元数据产生,即基础数据由系统通过元数据结构自动构造SQL语句而获取,此时取数SQL就是元数据对应的库表全表查询语句,如以下示例。

“行业”元数据是由库表bm_hy导入生成,那“行业”元数据对象生成的CodeTable、EasySearch对象的取数SQL基础都是select hybm,hy,hybm_sj from bm_hy,这样会碰到两个问题:

1)不够灵活
  不能满足复杂业务的取数需求;不能动态对基础数据附加额外业务条件。
2)效率可能不高
  由于不能动态对基础数据附加额外业务条件,那就是全表查询外面嵌套SQL,必然会影响SQL执行效率。

实现方案

在v6.8.4版本开始,CodeTableEasySearch对象支持由BDO对象产生。BDO包括SQL视图、存储过程等类型,可以灵活和高效提供二维结果集数据,并支持SQL参数动态解析,因此可以完全解决以上需求。

示例介绍

示例1

1) 创建一个名为“行业”的数据视图,SQL语句如下:

select HYBM,HY,HYBM_SJ from bm_hy
  where hybm='{p_hybm}' and hy like '%{hy}%' and HYBM_SJ='{pa_hybm_sj}'

2)在“行业”数据视图对象上,右键点击“自动创建EasySearch”菜单,生成了一个名为行业的EasySearch,在此对象上再右键点击“编辑”菜单,打开EasySearch编辑界面,如下图:

根据上图相应配置,此例中展示类型为“树形展示(简单方式)”
注意图中下方的参数对应配置。

  • “解码参数”对应于字典数据的编码类字段的SQL过滤参数,即通过这个参数值过滤出解码记录。
  • “搜索参数”对应于字典数据的名称类字段的SQL过滤参数,即通过这个参数值搜索筛选候选记录。
  • “父编码参数”对应树形字典数据的父编码字段的SQL过滤参数。若展示类型非“树形展示”则不需要定义该参数。

3) 以上配置完后,该EasySearch对象则在表单控件数据配置里引用即可。

示例2

1)在示例1的数据视图上再次创建一个EasySearch,编辑配置该EasySearch,如下图:

在此例中,把展示类型改为“列表展示”,列表展示只有“解码参数”、“搜索参数”两个系统参数。那这样pa_hybm_sj参数则可以作为一个业务参数(非系统参数),控件引用的地方则可以静态或动态传递该参数值,从而控制控件候选记录范围。在此,值类型设置为变量,在后面控件引用时可以重载配置。

2)在业务表单元数据的对应字段的控件数据,选择上述EasySearch对象,点击“传参配置”,如下图:

pa_hybm_sj参数,勾选重载复选框,并根据需要配置值类型是“常量”、“表达式”、“来源于字段”,及相应值内容。

若值类型设置为“表达式”且表达式里引用了表单字段,或“来源于字段”,则需点击左下角按钮“联动相关字段”,勾选所涉及的表单字段。

作者:林  创建时间:2023-06-16 10:35
最后编辑:林  更新时间:2025-04-24 13:55