对于列表中的每个值
迭代多个选择列表值(对于每个列表值)
您可使用“对每一个列表值”Deluge 语句循环迭代一行中的多个列表值。例如,如果表单中有 n 行,且对于每一行,多个列表字段中有 m 个值,您可以在每一行内循环迭代列表中的 m 个值。
语法
for each <fieldname> <variable> in <formname/rowvariable> [criteria]
其中,
- formname\rowvariable - 其数据必须一个接一个迭代的表单名称或行变量(包含与每个迭代对应的单个记录的数据)的名称。
- criteria - 在大多数情况下,您将希望有条件地提取数据。您可在这里指定提取表单数据的条件。它是可选参数。
- fieldname - 上述表单/行中从表单 - multiselect 导入数据类型的表单字段名称,其值必须一个接一个地迭代。
- variable - 变量的名称,该变量将用于保存与上述 fieldname 的每个迭代对应的数据。
示例
可视化用于计算所选产品总价的简单应用程序。该应用程序有以下表单:
- Products 表单用于输入产品名称及其费率。
- Order 表单用于订购一个或多个产品。在这里,Select Product 字段是来自 Products 表单的查找字段。当客户提交他的订单时,系统会计算所选产品的总价并显示在订单视图中。这通过编写 Order 表单中的添加记录->记录添加脚本来实现,如下所示:
on add
{
on success
{
val = 0.0;
for each Select_Product r in Order_form [ID == input.ID]
{
val = (val + r.Rate);
}
input.Total_Price = val;
}
}
代码说明:
- 当客户在 Order 表单中提交他的订单时,执行“添加时->成功时”脚本。
- 以下代码声明了一个名为 val 的变量以存储总价。设置变量 Deluge 语法用于创建此代码。
val = 0.0;
-
使用当前提交的编号作为条件,循环迭代 Order 表单中的 Select_Product 查找字段中的多个产品。对于每个列表值 Deluge 语法用于创建此代码。
- 该条件将提取其编号与输入编号 相同的记录。
- r 是集合变量的名称,该变量将用于保存与产品的每个迭代对应的数据。for each Select_Product r in Order_form [ID == input.ID]
- 将 val 变量加上每个产品的费率。此外,设置变量 Deluge 语法用于创建此代码。r.Rate 将从相关产品表单提取此费率。
val = (val + r.Rate);
- 当计算总价时,Total_Price 字段会用新值来更新。设置变量 Deluge 语法用于创建此代码。
input.Total_Price = val;
若要查看脚本,
- 从“工作流”页签中选择添加时->成功时脚本。