Power Apps通过唯一ID查找Dataverse行报类型不兼容错误如何解决
Power Apps通过Dataverse唯一ID查找行报类型不兼容错误的解决方法
问题场景
编写Power Apps公式实现通过唯一ID匹配Dataverse对应行时,通过名称列查找的公式可正常运行:
LookUp('MyTable', Name = "My Row", Name)
当参照Dataverse列显示名称编写按唯一ID查找的公式时(示例中唯一ID列显示名称和表名同为MyTable),公式如下:
LookUp('MyTable', MyTable = "477c7c4e-c8ea-ec11-bb3d-0022489447e3", Name)
此时等号位置抛出报错:
比较的类型不兼容。无法对以下类型执行比较:Table, Text。
报错原因是Power Apps将条件里的MyTable识别成了表对象,而非目标唯一ID列。
解决方法
这个问题是列和表重名导致的引用歧义,Power Apps公式解析时默认优先匹配全局的表对象,不会自动识别为重名列,用以下任意一种方式都可以修复:
- 直接引用列的逻辑名
Dataverse的每一列都有全局唯一的逻辑名(Schema Name),不会和其他对象重名。Dataverse主键列的默认逻辑名规则是「表逻辑名+id」,比如表MyTable逻辑名为cr681_mytable时,对应主键列逻辑名就是cr681_mytableid,替换显示名引用即可。另外注意主键是GUID类型,不要直接和文本比较,用GUID()函数转换ID字符串为对应类型,避免额外类型错误,示例公式:LookUp('MyTable', cr681_mytableid = GUID("477c7c4e-c8ea-ec11-bb3d-0022489447e3"), Name) - 用
ThisRecord显式指定行级作用域
如果不想查找列逻辑名,可以在列名前加ThisRecord.前缀,明确告知解析器当前引用的是LookUp遍历行范围内的列,而非全局表对象,示例公式:LookUp('MyTable', ThisRecord.MyTable = GUID("477c7c4e-c8ea-ec11-bb3d-0022489447e3"), Name)
内容的提问来源于stack exchange,提问作者Matthew
相关产品推荐
相关产品推荐

