求助:对比SharePoint列表项匹配后,用第三列颜色值填充标签的代码修正
原有代码可在SharePoint列表项匹配指定文本(如"FLT")时,将标签填充色设为固定颜色(深红色)。现需调整逻辑:对比第一个列表RP_Tasks_SPList的Task_Type_Short项与第二个列表RP_Faulting_Maintenace_Codes_SPList的FM_Code_Short列,匹配成功时用第二个列表中对应行的FM_Code_Colour值填充标签。
可正常运行的原代码
If( !IsBlank( LookUp( RP_Tasks_SPList, Task_Owner = Label3.Text && Text(DateValue(Date_of_Task_From), "yyyy-mm-dd") = Text(DateTimeValue(Button2_2.Text), "yyyy-mm-dd") && Task_Type_Short = "FLT" ) ), Color.DarkRed, RGBA(241,244,249, 1) )
待调试的错误代码
If( !IsBlank( LookUp( RP_Tasks_SPList, Task_Owner = Label3.Text && Text(DateValue(Date_of_Task_From), "yyyy-mm-dd") = Text(DateTimeValue(Button2_2.Text), "yyyy-mm-dd") && Task_Type_Short = Filter(RP_Faulting_Maintenace_Codes_SPList,FM_Code_Short) ) ), LookUp(RP_Faulting_Maintenace_Codes_SPList,FM_Code_Colour), RGBA(241,244,249, 1) )
错误分析与修正方案
核心错误点
- 数据表与单个值的判断错误:
Filter(RP_Faulting_Maintenace_Codes_SPList,FM_Code_Short)返回的是数据表,不能直接和Task_Type_Short(单个文本值)做相等判断,需用in运算符判断值是否在目标列的集合中。 - LookUp缺少匹配条件:直接调用
LookUp(RP_Faulting_Maintenace_Codes_SPList,FM_Code_Colour)会返回列表第一行的颜色值,无法对应当前匹配的任务类型,必须指定匹配FM_Code_Short与当前任务的Task_Type_Short。
修正后的代码(变量版,性能更优)
// 先获取当前匹配的任务记录,避免重复查询 Set(varMatchedTask, LookUp( RP_Tasks_SPList, Task_Owner = Label3.Text && Text(DateValue(Date_of_Task_From), "yyyy-mm-dd") = Text(DateTimeValue(Button2_2.Text), "yyyy-mm-dd") && Task_Type_Short in RP_Faulting_Maintenace_Codes_SPList.FM_Code_Short ) ); // 根据匹配结果设置颜色 If( !IsBlank(varMatchedTask), LookUp(RP_Faulting_Maintenace_Codes_SPList, FM_Code_Short = varMatchedTask.Task_Type_Short, FM_Code_Colour), RGBA(241,244,249, 1) )
修正后的代码(简化版,无需变量)
If( !IsBlank( LookUp( RP_Tasks_SPList, Task_Owner = Label3.Text && Text(DateValue(Date_of_Task_From), "yyyy-mm-dd") = Text(DateTimeValue(Button2_2.Text), "yyyy-mm-dd") && Task_Type_Short in RP_Faulting_Maintenace_Codes_SPList.FM_Code_Short ) ), LookUp( RP_Faulting_Maintenace_Codes_SPList, FM_Code_Short = LookUp( RP_Tasks_SPList, Task_Owner = Label3.Text && Text(DateValue(Date_of_Task_From), "yyyy-mm-dd") = Text(DateTimeValue(Button2_2.Text), "yyyy-mm-dd") ).Task_Type_Short, FM_Code_Colour ), RGBA(241,244,249, 1) )
补充说明
- 变量版通过存储匹配记录减少重复查询,适合数据量较大的场景。
- 简化版逻辑直接嵌套查询,适合数据量小、逻辑简单的场景。
- 需确保
RP_Faulting_Maintenace_Codes_SPList的FM_Code_Colour列存储Power Apps可识别的颜色格式(如Color.DarkRed、RGBA(255,0,0,1)或十六进制值)。
内容的提问来源于stack exchange,提问作者Andy
相关产品推荐
相关产品推荐

