Power Apps中Patch集合重复创建记录问题及SharePoint同步需求
一、Patch集合出现新增记录的原因及修正
1. 第一个公式的核心错误
你使用Defaults(colSubtract)作为Patch的第二个参数,Defaults()函数的作用是返回集合(或数据源)的默认空记录,因此Patch会基于这条空记录创建新条目,而非更新现有记录。
2. 第二个公式的问题
- 集合匹配错误:你在
Lookup中查询的是colUpdates,但要更新的目标集合是colSubtract,需将Lookup的集合改为colSubtract; - 空记录触发新增:如果
First(colSubtract).ID对应的记录在colSubtract中不存在,或Lookup返回空值,Patch会自动新增一条记录。
修正后的集合更新公式
更新集合第一条记录
如果目标是更新colSubtract的第一条记录,直接指定该记录即可:
Patch( colSubtract, First(colSubtract), // 明确指定要更新的现有记录 {CurrentBalance: varSub} );
更新集合中特定ID的记录
若要更新指定ID的记录,确保Lookup能匹配到有效记录:
Patch( colSubtract, LookUp(colSubtract, ID = 目标记录ID), // 替换为实际要更新的记录ID {CurrentBalance: varSub} );
提示:如果Lookup返回空值,Patch会自动新增记录,需确保目标记录确实存在于
colSubtract中。
二、同步varSub到SharePoint列表
根据业务场景,可选择以下两种同步方式:
1. 直接更新SharePoint指定记录
若已知要更新的SharePoint列表记录ID,直接Patch即可:
Patch( '你的SharePoint列表名称', LookUp('你的SharePoint列表名称', ID = 目标记录ID), // 指定SP列表中的目标记录 {CurrentBalance: varSub} // 替换为SharePoint列表的实际字段名 );
2. 先更新集合再批量同步
如果colSubtract是从SharePoint列表加载的集合,更新集合后可批量同步:
// 第一步:更新本地集合 Patch( colSubtract, First(colSubtract), {CurrentBalance: varSub} ); // 第二步:同步到SharePoint列表 ForAll( colSubtract, Patch( '你的SharePoint列表名称', LookUp('你的SharePoint列表名称', ID = ThisRecord.ID), {CurrentBalance: ThisRecord.CurrentBalance} ) );
提示:确保SharePoint列表的字段名与集合字段名一致,或根据实际字段名调整。
内容的提问来源于stack exchange,提问作者Ada Eloka
相关产品推荐
相关产品推荐

