PowerApps中LookUp函数使用变量无法查询数据问题求助
PowerApps 动态字段查询问题解决
问题根源
你用变量lookupVal存储字段名字符串,但PowerApps的LookUp函数无法直接通过字符串变量引用数据表字段——它会把变量值当成普通文本,而非对应字段的引用。比如你设置lookupVal = "'RIT#'",LookUp会去判断字符串"'RIT#'"是否等于searchText,而非判断phone_request_table里的'RIT#'字段值等于searchText,这就是查不到数据的核心原因。
解决方案一:用Switch动态匹配查询条件
修改「View Requests」页面中View Form的Item属性,通过Switch根据lookupVal的值选择对应查询逻辑:
Switch( lookupVal, "'RIT#'", LookUp(phone_request_table, 'RIT#' = searchText), "Requester_BSC_ID", LookUp(phone_request_table, Requester_BSC_ID = searchText) )
提示:如果觉得单引号麻烦,可以把按钮里的
Set(lookupVal, "'RIT#'")改成Set(lookupVal, "RIT#"),同时Switch里的判断值也同步改成"RIT#"。
解决方案二:直接存储查询结果(更简洁)
无需传递字段名变量,在按钮的OnSelect中直接查询出记录并存储,后续页面直接使用该记录:
修改按钮中的代码:
If( ritmSearch.Text = Blank(), Notify("Please enter a valid search value [BSC ID or RIT#]"), Set(searchText, ritmSearch.Text); Switch( drpSearch.Selected.Value = "RITM", true, Set(foundRecord, LookUp(phone_request_table,'RIT#' = searchText)); If(IsBlank(foundRecord), Notify("RITM not found."), NewForm(ViewForm); Navigate('View Requests') ), false, Set(foundRecord, LookUp(phone_request_table, Requester_BSC_ID = searchText)); If(IsBlank(foundRecord), Notify("BSC ID not found."), NewForm(ViewForm); Navigate('View Requests') ) ) )
然后将View Form的Item属性改为:
foundRecord
这种方法省去二次查询步骤,逻辑更直接,也彻底避免了字段引用的问题。
内容的提问来源于stack exchange,提问作者Con
相关产品推荐
相关产品推荐

