提取记录

 提取记录

表单是 Zoho Creator 中包含数据的结构。表单数据存储在关系数据库中,Deluge 提供称为集合变量的简单包装器用于访问这些数据。集合变量基于给定的条件、排序方式和范围保存从表单提取的一个或多个记录。若要访问当前提交/保存的字段值,您可以使用名为 input 的 Deluge 变量,语法为 input.<fieldname>

 语法

<collection variable> = formname[<criteria>] sort by <field> range from <x> to <y>;

其中,

  • collection variable - 变量名称,该变量包含从表单提取的记录。
  • formname - 要从中提取数据的表单名称。
  • criteria expression - 计算结果为一个值的条件表达式
  • sort by <field> - 记录将基于该字段按升序排列。默认情况下,记录将按升序排列。指定 sort by <field> 是可选的。
  • sort by <field> desc - 记录将基于该字段按降序排列。
  • range from <x> to <y> - 让您可以将提取的记录限定在开始索引 (x) 和结束索引 (y) 之间的范围。如果未指定范围,则将提取表单中满足给定条件的所有记录。

 示例

  1. 从表单提取所有记录
  2. 提取给定范围内的记录
  3. 从相关表单提取数据
  4. 从当前表单提取和更新相关表单数据
  5. 将记录从一个表单复制到另一个表单
  6. 提取最后添加的记录编号

 从表单提取所有记录

若要从表单 (FormA) 中提取所有记录,请将条件指定为 [ID != 0],其中 ID 是自动生成的字段,它包含表单中每个记录的唯一值。

x = FormA[ID != 0];

其中,
x 是保存表单数据的集合变量。
FormA 是从中提取数据的表单名称。
[ID != 0] 是条件表达式,所有记录都基于该条件表达式从 Employee 表单提取。

 

 提取给定范围内的记录

若要从表单 (FormA) 提取给定范围内的记录,请在提取记录任务中指定开始索引和结束索引范围,如下面的示例代码所示。在这里,将从表单中提取按 Added_Time 字段排序的前五个记录。

 x = FomA [ID != 0] sort by Added_Time range from 1 to 5;

其中,

  • x 是包含表单数据的集合变量的名称。
  • FormA - 要从中提取数据的表单名称。
  • [ID !=0] 是条件表达式。
  • sort by Added_Time 是一个字段,记录将基于它排序。在这,Added_Time 是 Deluge 变量,返回添加记录的时间。
  • range from 1 to 5 - 让您可以将提取的记录限定在开始索引 (x) 和结束索引 (y) 之间的范围。如果未指定范围,则将提取表单中满足给定条件的所有记录。

 从相关表单提取数据

若要从表单提取数据并在另一个表单中使用,必须使用查找字段在两个表单之间建立关系。若要使用查找字段在表单之间建立关系,请参阅主题建立关系。让我们通过这个例子来说明这个功能。示例应用程序有两个表单:

  1. 客户表单用于输入客户详细信息,例如,客户编号、姓名、邮箱和地址

    显示客户报表的屏幕截图

  2. 新的工单表单用于输入来自客户的新的服务请求。这将有一个名为“客户编号”的字段作为来自客户表单的客户编号字段的查找字段。还有其他字段来显示客户详细信息和请求详细信息。当从列表中选择客户编号时,姓名、地址和邮箱等客户详细信息将从客户表单中显示,如下面的截图所示。

    屏幕截图显示了新的工单表单,基于所选客户编号自动填入数据

为达到这个目的,将以下代码添加到新的工单表单的“客户编号”字段的用户输入时部分。

if (Customer_form[ID == input.Customer_number].count() > 0)
{
x = Customer_form [ID == input.Customer_number];
//input. refers to fields in current form
input.Name = x.Name;
input.Address = x.Address;
input.Email = x.Email;
}

代码说明:

检查客户是否已存在。如果存在,提取满足给定条件的记录,并将它存储在集合变量中。使用提取的数据更新当前表单字段

x = Customer_form [ID == input.Customer_number]; Fetch records from Customers form with the given criteria and store it in collection variable named “x”
input.Name = x.Name; Update the Name in the current form from the variable “x”.在这里,input.Name 指的是当前表单中的客户名称字段,x.Name 是从“Customers”表单提取的客户名称字段。

 从当前表单提取和更新相关表单数据

在下面的示例中,编写添加时 - 成功时脚本以便从 Book 表单提取特定的记录,其名称与“入库书籍”表单中的当前提交书籍名称相同。提取的记录存储在名为 myBook 的集合变量中。现在您可以从 myBook 集合变量访问此记录中的任何字段。

if (count(Book [ID == input.book]) > 0)

//从‘Book’表单提取书籍行

myBook = Book [ID == input.book];
//将此书籍的‘状态’修改为‘已入库’。
myBook.Status = "Issued";
 

 将记录从一个表单复制到另一个表单

//iterate each record in FormA
for each x in FormA
{ //add to FormB, using the Insert record task
insert into FormB
[
FirstName = x.FirstName
Added_User = zoho.loginuser
]
}

 提取最后添加的记录编号

若要提取表单中最后添加的记录编号,您可以使用下面给出的脚本:

var_a = Order_form[ID != 0].ID sort by Added_Time desc;

其中,
var_a 是用于保留记录编号的变量。
Order_form 是表单的链接名称。
Added_Time 是存储记录添加时间的系统字段。
desc 按降序排列记录。

 相关主题