1

我能够从另一个表单/报告中检索数据,但我无法更新值并保存回另一个表单。

对于下面的示例,我试图获取用户的假期天数,然后添加新的假期并更新员工表单中的假期天数。但是,我得到一个不正确的声明错误。

有人可以告诉我如何在使用其他表单时更新/编辑其他表单吗?

daysOff = Employee_Form[ID == input.Employee_Name].Vacation_Days_Taken;
if(input.Number_of_Days_Requested + daysOff < 20)
{
     Employee_Form[ID == input.Employee_Name].Vacation_Days_Taken = input.Number_of_Days_Requested + daysOff;
}
4

2 回答 2

1

您可以在 Zoho Creator 上轻松实现此目的。我们了解到您正在尝试使用“获取记录”来更新员工的休假,但您需要使用“更新记录”任务来代替。我还使用了两种表格——员工表格和请假申请表格。

第一步是创建一个集合变量(employeeRec)并从 Employee 表单中获取记录。

employeeRec = Employee_form[ID == input.Employee_Name];  

获取该特定员工的记录并存储在集合变量中(employeeRec)

daysOff = employeeRec.Vacation_Days_Taken; 

然后让我们获取 Vacation_Days_Taken 并将其分配给另一个变量 daysOff。之后使用 IF 条件来验证和更新 Vacation_Days_Taken。

if(daysOff + input.No_of_days_requested < 20)
{
    employeeRec.Vacation_Days_Taken=daysOff + input.No_of_days_requested;
}

希望这段代码对你有用。

于 2018-02-08T13:32:38.183 回答
1

在您在此处提供并声称不起作用的第二个代码段中。我看到两个问题。

  1. 员工表单集合位于状态检查块内。
  2. 不执行检查以确定叶子的数量是否超过 20。
employeeForm = Employee_Form[ID == input.Employee_Name];// I have moved this assignment 
outside the if check meant for approved status. 
If this line is included inside the if check and if the status is not approved, then the 
employeeForm would not be available, which might cause issues.

if(input.Status == "Approved") { 
daysOff=employeeForm.Vacation_Days_Taken; 
daysTaken=input.Number_of_Days_Requested + daysOff;

// This check is missing
if(daystaken < 20){
employeeForm.Vacation_Days_Taken=daysTaken;
sendmail 
[from:zoho.adminuserid
 to:Employee_Form[ID == input.Employee_Name].email
 subject:"Your Request Has Been Approved"
 ....
]
}
}
  1. 我还看到您已经为触发器On Edit -> On Success添加了这个。这意味着这应该在提交完成后执行。如果你想在验证后执行这个脚本,那么这个块应该是On Edit -> On Validate。如果计数超过 20,则可以取消提交以禁止提交记录。

请尝试所有这些,如果您仍然遇到问题,请告诉我们究竟是什么失败/无法处理错误消息或值差异等。

于 2020-01-03T10:20:54.803 回答