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

Power Apps中ForAll函数报错:RowNumber列不存在(已确认存在)

解决Power Apps中ForAll+Patch时"RowNumber列不存在"的问题

核心原因排查

1. SharePoint列内部名称与显示名称不匹配

这是最常见的触发原因:即使你在SharePoint中将列的显示名称设为RowNumber,如果创建后修改过名称,其内部名称可能保留旧值(比如RowNumber0、_x0052_owNumber等)。Power Apps的Patch操作仅识别列的内部名称,而非显示名称。

验证方法:

  • 打开SharePoint列表的设置页面,找到RowNumber列并进入编辑页面
  • 查看浏览器地址栏,提取Field=后的字符串,这就是该列的真实内部名称(示例:https://xxx.sharepoint.com/sites/xxx/_layouts/15/FldEdit.aspx?List=%7Bxxx%7D&Field=RowNumber0)

2. 集合列类型与SharePoint列类型不匹配

若SharePoint的RowNumber为数字类型,但集合TempUnitsWithRow中的RowNumber被意外转为字符串类型,Patch时也会触发"列不存在"的错误。

3. Power Apps数据源缓存

Power Apps可能缓存了旧的SharePoint列表结构,导致无法识别新增或修改的列。


针对性解决方案

方案1:使用SharePoint列的内部名称修改Patch代码

将Patch中的RowNumber替换为你查到的内部名称,示例:

ForAll(
    TempUnitsWithRow,
    Patch(
        AssignmentTable_1,                    
        Defaults(AssignmentTable_1),          
        {
            // 替换为实际内部名称,比如RowNumber0
            RowNumber0: ThisRecord.RowNumber,
            Unit: ThisRecord.Unit,
            Mileage: ThisRecord.Mileage,
            AssignedDate: DateAdd(
                Today(),
                Quotient(ThisRecord.RowNumber - 1, 2),
                Days
            ),
            ID: ThisRecord.ID                 
        }
    )
)

方案2:优化集合生成逻辑(同时避免类型问题)

原代码用Sequence+Last(FirstN)生成RowNumber的效率极低,建议改用更高效的写法,同时确保列类型与SharePoint匹配:

// 替换原TempUnitsWithRow的生成代码
ClearCollect(
    TempUnitsWithRow,
    AddColumns(
        TempUnits,
        "RowNumber",
        // 按field_1降序生成行号,从1开始
        CountRows(TempUnits) - Index(TempUnits, ThisRecord).Row + 1
    )
)

方案3:刷新数据源

  • 在Power Apps编辑器左侧的数据源面板中,找到AssignmentTable_1
  • 点击列右侧的三个点,选择刷新,等待刷新完成后再测试代码

内容的提问来源于stack exchange,提问作者Vic

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 19:45:03