反馈已提交
网络繁忙
本文学习视频:填报联动
填报时希望某个单元格填入数据后,其他相关单元格自动从数据库获取到对应数据,如下图所示:
有三种方法可以实现填报联动效果:
使用 value()函数 实现。支持扩展场景,性能较好。不支持三级联动,即B根据A联动的情况下,C无法根据B联动。
使用 ds1.select()函数 实现。支持扩展场景,性能一般。
使用 SQL()函数 实现。支持扩展场景,大数据量下性能较差。
注:不支持层次坐标联动,例如A1[A1:-1]、A1[!0]、A1{A1=1}、&A1等。
1)新建普通报表,设计填报表格,A3 单元格添加下拉框控件,B3~F3 添加文本框控件,如下图所示:
2)A3 单元格设置纵向扩展,否则添加多行时会有限制。如下图所示:
选中 A3 单元格,给下拉框控件绑定数据字典,如下图所示:
增加数据集ds1,sql语句为SELECT * FROM 产品
B3~F3 单元格添加公式,根据 A3 单元格下拉框选择的值,查询出指定的数据,如下图所示:
B3~F3 单元格添加的公式如下
B3:value("ds1",2,1,A3)
C3:value("ds1",5,1,A3)
D3:value("ds1",6,1,A3)
E3:value("ds1",7,1,A3)
F3:value("ds1",8,1,A3)
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)
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)
如果有插入行的需求,那么需要通过设置插入行策略,来让插入的行也能继承联动的效果。
选中 B3~F3 单元格,将单元格的插入行策略修改为原值,如下图所示:
注:如果在填报时修改了联动公式所在单元格(B3~F3)的值,那么新输入的值会把公式覆盖掉,导致后续重新选择产品ID时,该单元格无法再联动。如果后续插入行,那插入行继承原值后也会丢失联动效果。如有此需求,可参考JS实现根据控件值自动匹配数据解决。
PC 端效果如 1.2问题描述 中所示,支持移动端预览,效果如下图所示:
点击下载模板:
方法一:自动匹配-value()函数.cpt
方法二:自动匹配-ds1.select()函数.cpt
方法三:自动匹配-sql()函数.cpt
如果涉及到 Excel 导入后需要联动的场景,则需要保证 Excel 中没有联动公式所在列,比如示例中的(B3~F3),否则联动公式会被覆盖,导致无法联动。比如示例中的模板,以下 Excel 导入是可以联动的。
售前咨询电话
400-811-8890转1
在线技术支持
请前往「服务平台」,选择「在线支持」
热线电话:400-811-8890转2
总裁办24H投诉
热线电话:173-1278-1526
文 档反 馈
鼠标选中内容,快速反馈问题
鼠标选中存在疑惑的内容,即可快速反馈问题,我们将会跟进处理。
不再提示
10s后关闭