反馈已提交

网络繁忙

当前为10.0版本文档,只有最新版本的文档支持在线编辑修改,如果想创建/编辑文档,请移步至 最新版帮助文档

根据控件值自动匹配数据

  • 文档创建者:文档助手1
  • 历史版本:40
  • 最近更新:Leo.Tsai 于 2022-08-19
  • 1. 概述

    1.1 学习视频

    本文学习视频:填报联动

    1.2 问题描述

    填报时希望某个单元格填入数据后,其他相关单元格自动从数据库获取到对应数据,如下图所示:

    2856E1F2-496C-4ABB-849B-D0DCDDE51E59.GIF

    1.3 实现思路

    有三种方法可以实现填报联动效果:

    • 使用 value()函数 实现。支持扩展场景,性能较好。(要求jar包日期在2021-08-01及之后,否则插入行无法联动)

    • 使用 ds1.select()函数 实现。支持扩展场景,大数据量下存在性能风险。

    • 使用 SQL()函数 实现。支持扩展场景,大数据量下存在性能风险


      2. 示例

      2.1 设计填报表格

      1)新建普通报表,设计填报表格,A3 单元格添加下拉框控件,B3~F3 添加文本框控件,如下图所示:

      222

      2)A3 单元格设置纵向扩展,否则添加多行时会有限制。如下图所示:

      2.2 下拉框设置数据字典

      选中 A3 单元格,给下拉框控件绑定数据字典,如下图所示:

      1600845863156108.png

      2.3 方法一:value()函数

      增加数据集ds1,sql语句为SELECT * FROM 产品

      B3~F3 单元格添加公式,根据 A3 单元格下拉框选择的值,查询出指定的数据,如下图所示:

      B3~F3 单元格添加的公式如下

      B3:value("ds1","产品名称","产品ID",A3)

      C3:value("ds1","单位数量","产品ID",A3)

      D3:value("ds1","成本价","产品ID",A3)

      E3:value("ds1","单价","产品ID",A3)

      F3:value("ds1","库存量","产品ID",A3)

      2.4 方法二:ds1.select()函数

      增加数据集ds1,sql语句为SELECT * FROM 产品

      B3~F3 单元格添加公式,根据 A3 单元格下拉框选择的值,查询出指定的数据,如下图所示:

      B3~F3 单元格添加的公式如下

      B3:ds1.select(产品名称,产品ID=A3)

      C3:ds1.select(单位数量,产品ID=A3)

      D3:ds1.select(成本价,产品ID=A3)

      E3:ds1.select(单价,产品ID=A3)

      F3:ds1.select(库存量,产品ID=A3)

      2.5 方法三:SQL()函数

      B3~F3 单元格添加公式,根据 A3 单元格下拉框选择的值,查询出指定的数据,如下图所示:

      B3~F3 单元格添加的公式如下

      B3:sql("FRDemo","select 产品名称 from 产品 where 产品id="+A3,1,1)

      C3:sql("FRDemo","select 单位数量 from 产品 where 产品id="+A3,1,1)

      D3:sql("FRDemo","select 成本价 from 产品 where 产品id="+A3,1,1)

      E3:sql("FRDemo","select 单价 from 产品 where 产品id="+A3,1,1)

      F3:sql("FRDemo","select 库存量 from 产品 where 产品id="+A3,1,1)

      注:公式里面产品 ID 对应 A3 单元格的内容为数字,如果是字符串需要修改公式,如:sql("FRDemo","select 产品名称 from 产品 where 产品id='"+A3+"'",1,1)

      2.6 设置插入行策略

      如果有插入行的需求,那么需要通过设置插入行策略,来让插入的行也能继承联动的效果。

      选中 B3~F3 单元格,将单元格的插入行策略修改为原值,如下图所示:

      1600848619672998.png

      注:如果在填报时修改了联动公式所在单元格(B3~F3)的值,或者为其设置了条件属性-新值,那么新值就可能把公式覆盖,导致后续重新选择产品ID时,该单元格无法再联动。如果后续插入行,那插入行继承原值后也会丢失联动效果。如有此需求,可参考JS实现根据控件值自动匹配数据解决。

      2.7 效果预览

      PC 端效果如 1.2问题描述 中所示,支持移动端预览,效果如下图所示:


      3. 模板下载

      4. 注意事项

      如果涉及到Excel导入后需要联动的场景,则需要保证Excel中没有联动公式所在列,比如示例中的(B3~F3),否则联动公式会被覆盖,导致无法联动。比如示例中的模板,以下Excel导入是可以联动的。

      也可以考虑使用自定义导入功能,在选择列的时候,不选择公式列进行导入。

      附件列表


      主题: 填报应用
      已经是第一篇
      已经是最后一篇
      • 有帮助
      • 没帮助
      • 只是浏览

      售前咨询电话

      400-811-8890转1

      在线技术支持

      请前往「服务平台」,选择「在线支持」

      热线电话:400-811-8890转2

      总裁办24H投诉

      热线电话:173-1278-1526