Power Apps使用Patch函数更新SharePoint列表报错求助
看起来你在尝试用Patch更新面试评估的SharePoint列表时遇到了语法和类型匹配问题,我来帮你一步步排查和修正:
先分析你当前代码的报错点
你提到的错误出在Name = CBI_CandidateDropdown.Selected.Value的等号和.Value上,大概率是下拉框的数据源类型与列值类型不匹配导致的,另外还有一些可以优化的细节:
修正方案及代码调整
1. 确认下拉框的数据源配置
先检查你的CBI_CandidateDropdown的Items属性:
- 如果
Items设置的是'Assessment Center Test Data'.Name(直接取列表里的所有候选人姓名文本),那.Value是正确的; - 如果
Items设置的是整个SharePoint列表(即'Assessment Center Test Data'),那你需要用CBI_CandidateDropdown.Selected.Name来获取选中候选人的姓名——因为这时候Selected返回的是一条完整的列表记录,不是单个文本值,用.Value会导致属性引用错误。
2. 优化Patch函数的记录查找逻辑
用Lookup替代First(Filter)会更高效,因为Lookup专门用于查找单条匹配记录,逻辑也更清晰(前提是你的Name列没有重复的候选人姓名)。
3. 处理分数列的类型匹配
如果你的ScoreTest是数字类型的列,记得把下拉选中的文本分数转成数值类型,避免类型不匹配报错。
修正后的代码如下:
Patch( 'Assessment Center Test Data', // 用Lookup精准查找对应候选人的记录 LookUp('Assessment Center Test Data', Name = CBI_CandidateDropdown.Selected.Value), { // 如果ScoreTest是数字列,用Value()转换文本值 ScoreTest: Value(CBI_DR_OverallScore.Selected.Value) } )
额外注意事项
- 如果你的
Name列存在重复的候选人姓名,Lookup只会返回第一条匹配的记录,建议给候选人添加唯一标识(比如工号)来确保更新的是正确的行; - 检查SharePoint列的内部名称:有时候列的显示名和内部名不一致(比如带空格的列,内部名会去掉空格),可以在SharePoint列表的「列设置」里查看内部名称,确保Power Apps里用的是正确的列名;
- 测试时可以先把
CBI_CandidateDropdown.Selected.Value(或.Name)放到一个标签里,确认它能正确输出选中的候选人姓名,再排查Patch的问题。
备注:内容来源于stack exchange,提问作者eric stevenson
相关产品推荐
相关产品推荐

