PowerApps中TotalLeave字段识别异常求助:同字段其他位置可用
解决PowerApps中Patch操作提示“TotalLeave未被识别”的问题
问题出在你Patch更新字段的写法上:在第三个参数的对象里,直接写TotalLeave + Slider_Days.Value时,PowerApps无法识别这个TotalLeave是你要修改的那条员工记录的字段值——当前上下文没有自动关联到LookUp返回的目标记录,必须明确指定从该记录中获取字段当前值。
下面是两种可行的修改方案:
方案1:用With缓存目标记录(推荐,减少重复查询)
用With函数把LookUp到的员工记录缓存起来,后续直接引用缓存的记录字段,既解决识别问题,还能减少一次SharePoint查询请求:
If( !IsBlank(Dropdown_Employee_New.Selected.EmployeeEmail) && Slider_Days.Value > 0, With( { TargetEmployee: LookUp(EmployeeLeaveBalances, EmployeeEmail = Dropdown_Employee_New.Selected.EmployeeEmail) }, Patch( EmployeeLeaveBalances, TargetEmployee, { TotalLeave: TargetEmployee.TotalLeave + Slider_Days.Value } ); Patch( LeaveChangeLog, Defaults(LeaveChangeLog), { EmployeeEmail: Dropdown_Employee_New.Selected.EmployeeEmail, EmployeeName: Dropdown_Employee_New.Selected.EmployeeName, ChangeType: { '@odata.type': "#Microsoft.Azure.Connectors.SharePoint.SPListExpandedReference", Value: "Add" }, ChangeAmount: Slider_Days.Value, Reason: "Manual adjustment via Add Days", ChangedBy: User().Email, ChangeDate: Now() } ); Notify("Days added successfully!", NotificationType.Success) ), Notify("Please select a valid employee and ensure positive days.", NotificationType.Error) )
方案2:直接在Patch中引用LookUp结果的字段
如果不想用With,也可以直接在更新字段时,通过LookUp获取当前值:
If( !IsBlank(Dropdown_Employee_New.Selected.EmployeeEmail) && Slider_Days.Value > 0, Patch( EmployeeLeaveBalances, LookUp(EmployeeLeaveBalances, EmployeeEmail = Dropdown_Employee_New.Selected.EmployeeEmail), { TotalLeave: LookUp(EmployeeLeaveBalances, EmployeeEmail = Dropdown_Employee_New.Selected.EmployeeEmail).TotalLeave + Slider_Days.Value } ); Patch( LeaveChangeLog, Defaults(LeaveChangeLog), { EmployeeEmail: Dropdown_Employee_New.Selected.EmployeeEmail, EmployeeName: Dropdown_Employee_New.Selected.EmployeeName, ChangeType: { '@odata.type': "#Microsoft.Azure.Connectors.SharePoint.SPListExpandedReference", Value: "Add" }, ChangeAmount: Slider_Days.Value, Reason: "Manual adjustment via Add Days", ChangedBy: User().Email, ChangeDate: Now() } ); Notify("Days added successfully!", NotificationType.Success), Notify("Please select a valid employee and ensure positive days.", NotificationType.Error) )
注意:方案2会执行两次LookUp查询,相比方案1效率低一些,优先推荐方案1。
内容的提问来源于stack exchange,提问作者Stanners
相关产品推荐
相关产品推荐

