历史版本11 :根据控件值自动匹配数据 返回文档
编辑时间:
内容长度:图片数:目录数:
修改原因:
1. 问题描述编辑
有如下图情况,只给出一系列的编号,根据编号自动在数据库中匹配出对应的数据,然后再对数据进行修改操作:
2. 实现思路编辑
在对应的单元格中,通过sql公式取出对应的值,然后在公式的单元格中设置插入行策略为原值即可。
3. 示例编辑
3.1 模板制作
如下图,新建一张模板,模板样式如下图:
3.2 修改模板
按照如下表格,在单元格中插入公式:
单元格 | 操作 | 效果 |
---|---|---|
B3 | 设置为下拉框,数据来自FRDemo中的产品表,实际值和显示值都是产品ID | 设置纵向扩展,通过下拉框选择产品编号 |
C3 | =if(len(B3) = 0, "", sql("FRDemo", "select 产品名称 from 产品 where 产品ID=" + B3, 1, 1)) | 获取产品表中产品ID对应的产品名称 |
D3 | =if(len(B3) = 0, "", sql("FRDemo", "select 供应商ID from 产品 where 产品ID=" + B3, 1, 1)) | 获取产品表中产品ID对应的供应商ID |
E3 | =if(len(B3) = 0, "", sql("FRDemo", "select 类别ID from 产品 where 产品ID=" + B3, 1, 1)) | 获取产品表中产品ID对应的类别ID |
F3 | =if(len(B3) = 0, "", sql("FRDemo", "select 成本价 from 产品 where 产品ID=" + B3, 1, 1)) | 获取产品表中产品ID对应的成本价 |
G3 | =if(len(B3) = 0, "", sql("FRDemo", "select 单价 from 产品 where 产品ID=" + B3, 1, 1)) | 获取产品表中产品ID对应的单价 |
H3 | =if(len(B3) = 0, "", sql("FRDemo", "select 库存量 from 产品 where 产品ID=" + B3, 1, 1)) | 获取产品表中产品ID对应的库存量 |
I3 | =if(len(B3) = 0, "", sql("FRDemo", "select 订购量 from 产品 where 产品ID=" + B3, 1, 1)) | 获取产品表中产品ID对应的订购量 |
J3 | =if(len(B3) = 0, "", sql("FRDemo", "select 再订购量 from 产品 where 产品ID=" + B3, 1, 1)) | 获取产品表中产品ID对应的再订购量 |
K3 | =if(len(B3) = 0, "", sql("FRDemo", "select 中止 from 产品 where 产品ID=" + B3, 1, 1)) | 获取产品表中产品ID对应的中止 |
注:这里的产品编号B3单元格的内容为数字,所以公式里的B3不需要加'' ,若产品编号为字符串,则B3需要加'',相应公式应修改为:=if(len(B3) = 0, "", sql("FRDemo", "select 产品名称 from 产品 where 产品ID='"+B3+"'", 1, 1))
3.3 插入行策略设置
设置C3:K3单元格的插入行策略为原值,即保留原有的公式。
3.4 保存模板
具体的设置可参考模板:%FR_HOME%\WebReport\WEB-INF\reportlets\doc\Form\LineForm\自动匹配.cpt