PowerApps中ForAll+Patch仅复制集合最后一条记录至SPO列表的问题
PowerApps Patch到SPO列表时所有记录被最后一条覆盖的问题解决
问题情况
- 已通过集合
NewtestCol收集多组四列数据,数据表格显示正常,集合内各记录值均正确 - 点击提交按钮执行Patch操作后,SPO列表生成对应数量的新记录,但所有记录内容均为集合最后一条记录的值
- 使用的Patch代码:
ForAll(NewtestCol,Patch('VDI Request Form',Defaults('VDI Request Form'), {'Region & Domain': RegionDomain1.Selected,'Domain UID': DomainUID1.Text,'Requesting For': RequestingFor1.Text,'Request Number': RequestNumber.Text }))
问题原因
代码中直接引用了控件(如RegionDomain1.Selected、DomainUID1.Text)的当前值,而非集合NewtestCol中循环项的对应字段值。ForAll执行时,控件的值已经是最后一次输入的内容,因此所有Patch操作都会使用这个最终值,导致所有记录被覆盖为最后一条的内容。
解决方案
修改Patch代码,引用集合NewtestCol中当前循环记录的字段值。假设集合内的字段名与你收集数据时定义的名称一致(比如RegionDomain、DomainUID、RequestingFor、RequestNumber),则代码修改为:
ForAll(NewtestCol, Patch('VDI Request Form', Defaults('VDI Request Form'), { 'Region & Domain': ThisRecord.RegionDomain, 'Domain UID': ThisRecord.DomainUID, 'Requesting For': ThisRecord.RequestingFor, 'Request Number': ThisRecord.RequestNumber } ) )
- 若集合字段名与SPO列表的列名完全一致,可省略
ThisRecord.前缀,直接写字段名 - 确保集合
NewtestCol在收集数据时,是通过类似Collect(NewtestCol, {RegionDomain: RegionDomain1.Selected, DomainUID: DomainUID1.Text, ...})的方式,将控件值正确存入对应字段中
内容的提问来源于stack exchange,提问作者Prabhat Singh
相关产品推荐
相关产品推荐

