背景:
在做一个门窗的订单系统,门的种类很多,比如A, B, C
当前在订单表单中,通过关联查询组件,点击“新增”按钮,跳转到门A的表单页面,新增了两条A的数据,金额分别是1000元和2000元
问题:
当前的订单表单中要计算总金额,如何拿到这两条A的数据中的金额数据?
在宜搭上,您可以使用数据集和公式来实现筛选其他表单的数据,并计算筛选结果某个字段的和,赋值给当前表单的文本组件。具体步骤如下:
创建数据集:在宜搭的数据集管理页面中,创建一个数据集,用于存储要筛选和计算的数据。
导入数据:将要筛选和计算的数据导入到数据集中,确保数据格式和字段名称与目标表单相符。
创建文本组件:在目标表单的页面设计器中,创建一个文本组件,用于显示计算结果。
添加公式:在文本组件的属性设置中,选择“数据关联”选项卡,在“文本内容”输入框中添加公式。
预览表单:保存表单设计并预览表单,验证计算结果是否正确。
你可以把不同种类的门窗分别做成子表单,比如A门窗的种类、规格、单价、金额等等在一个子表单里,B门窗、C门窗同理。
然后你就可以在宜搭子表单里面把相同产品用以下公式进行合计:SUM(VALUE(IF(EXACT(子表单.类型,"产品"),子表单.数值,0)))
以上仅供参考,具体你可以结合自己实际情况酌情处理,比如公式里你可以把产品名称换成你的A门窗或者B门窗。
在某宜搭表单 > 页面管理页面,单击数据管理,可以查看宜搭产品支持筛选的组件,如下图所示。
重要
通过接口筛选表单,部分组件不支持。支持的表单组件请查看本文后续章节支持筛选条件的表单组件。
您可以使用宜搭平台的计算函数和数据处理功能来实现筛选其他表单的数据并计算筛选结果某个字段的和,然后将结果赋值给当前表单的文本组件。
以下是一种可能的宜搭流程设计:
首先,确保您已经创建了两个表单组件:一个用于筛选的表单组件(例如,选择特定条件的下拉框或文本输入框),另一个用于显示结果的文本组件。
在筛选表单组件上添加适当的触发事件,例如“值改变”事件。当用户在筛选表单组件上做出更改时,将会触发该事件。
在事件处理程序中,使用计算函数和数据处理功能来筛选其他表单的数据,并计算筛选结果某个字段的和。具体的计算逻辑将取决于您的数据结构和要求。
一旦计算得到结果,将结果赋值给当前表单的文本组件。通过设置文本组件的值属性,将计算结果显示在文本组件上。
在宜搭中,您可以通过以下步骤来筛选其他表单的数据并计算筛选结果某个字段的和,然后将结果赋值给当前表单的文本组件:
在订单表单中,添加一个文本组件用于显示总金额。
在订单表单中,添加一个关联查询组件,用于关联门A的数据。
在关联查询组件的设置中,选择关联的表单为门A的表单,设置关联条件。
在关联查询组件中,添加一个按钮组件,并设置按钮的动作为“新增”。
在按钮的动作设置中,选择跳转到门A的表单页面,并设置跳转后的操作为“新增数据”。
在门A的表单中,添加一个数值组件用于输入金额。
在门A的表单中,保存数据后,返回订单表单。
在订单表单中,添加一个计算字段组件,用于计算关联查询组件中筛选结果的金额字段的和。
在计算字段组件的设置中,选择关联查询组件为之前添加的关联查询组件,设置计算类型为“求和”,选择金额字段。
在计算字段组件的设置中,添加一个触发器,选择关联查询组件的数据更新为触发条件。
在触发器的操作设置中,选择更新文本组件的值为触发操作。
在文本组件的设置中,选择计算字段组件为数据源,设置显示为计算字段组件的值。
这样,当您点击订单表单中的新增按钮并在门A的表单中添加数据后,订单表单中的总金额文本组件会自动更新为门A数据中金额字段的和。
可以通过以下步骤来拿到这两条A的数据中的金额数据:
在订单表单页面中,通过关联查询组件将门A的数据关联进来。这样可以在订单表单中显示门A的相关数据。
在订单表单中,新增两条A的数据,金额分别是1000元和2000元。
在订单表单中,使用合计函数或者计算字段来计算总金额。具体方法如下:
合计函数:在表单中添加一个合计函数字段,将该字段的计算方式设置为"合计"。然后将门A的金额字段添加到该合计函数字段中,系统会自动计算出总金额。
计算字段:在表单中添加一个计算字段,将该字段的计算方式设置为"计算"。然后使用公式来计算总金额,公式可以是门A的金额字段1加上门A的金额字段2,即总金额=金额字段1 + 金额字段2。
通过以上步骤,就可以在订单表单中拿到这两条A的数据中的金额数据,并计算出总金额。
具体的步骤如下:
以下是一个伪代码示例:
// 假设当前表单的ID是orderForm
// 假设需要读取数据的表单的ID是formB
// 假设需要赋值的组件是金额字段的输入框,ID是amountInput
// 在当前表单的事件处理函数中
function onAddData() {
// 获取表单B的实例
var formB = FormApp.openById('formB');
// 读取数据
var dataA = formB.getResponse().getItemResponses().filter(function(response) {
return response.getItem().getTitle() === '字段A'; // 假设字段A是需要读取的数据
})[0].getResponse();
// 将数据赋值给当前表单的组件
var amountInput1 = FormApp.getActiveForm().getItemById('amountInput1').asTextItem(); // 假设有两个金额字段的输入框,ID分别为amountInput1和amountInput2
var amountInput2 = FormApp.getActiveForm().getItemById('amountInput2').asTextItem();
amountInput1.createResponse(dataA + '元');
amountInput2.createResponse((dataA * 2) + '元');
}
请根据你的具体情况进行调整和修改。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。