You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 07:16:01