对于列表中的每个值

 迭代多个选择列表值(对于每个列表值)

您可使用“对每一个列表值”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;
}
}

代码说明:

  1. 当客户在 Order 表单中提交他的订单时,执行“添加时->成功时”脚本。
  2. 以下代码声明了一个名为 val 的变量以存储总价。设置变量 Deluge 语法用于创建此代码。

    val = 0.0;

  3. 使用当前提交的编号作为条件,循环迭代 Order 表单中的 Select_Product 查找字段中的多个产品。对于每个列表值 Deluge 语法用于创建此代码。

    - 该条件将提取其编号与输入编号 相同的记录。
    - r 是集合变量的名称,该变量将用于保存与产品的每个迭代对应的数据。

    for each Select_Product r in Order_form [ID == input.ID]

  4. val 变量加上每个产品的费率。此外,设置变量 Deluge 语法用于创建此代码。r.Rate 将从相关产品表单提取此费率。

    val = (val + r.Rate);

  5. 当计算总价时,Total_Price 字段会用新值来更新。设置变量 Deluge 语法用于创建此代码。

    input.Total_Price = val;

    若要查看脚本,

    • 从“工作流”页签中选择添加时->成功时脚本。