Power Apps Canvas应用:Filter无法搜索Excel表新增数据但Search可用
问题原因
- Filter函数的委托限制:Excel作为Power Apps数据源时,
in操作符不支持云端委托执行,只能在客户端本地已加载的数据集内筛选。你的初始数据刚好是2000行(Power Apps默认的非委托查询行上限),所以Filter能检索到这些本地数据;新增的记录未被加载到本地缓存,因此Filter无法找到。 - Search函数的匹配逻辑差异:Search函数支持Excel数据源的委托,因此能查到新增的云端数据,但你当前的Search公式未对搜索文本做大小写统一和首尾空格处理,导致与原数据的匹配逻辑和Filter不一致,无法返回部分初始数据。
解决方案
方法1:调整本地缓存上限(适合数据量不大的场景)
- 在Power Apps编辑器的设置→高级设置中,找到“Data row limit for non-delegable queries”,将数值调整为大于当前数据总行数(比如3000)。这样新增的记录会被加载到本地,原来的Filter公式就能检索到新旧所有数据。
- 缺点:数据量过大时会影响应用性能。
方法2:修改Filter公式为支持委托的等价逻辑(推荐)
由于in不支持Excel委托,改用支持委托的Search函数,并对齐原Filter的匹配规则(大小写不敏感、忽略首尾空格):
Search(SacStokTable, Lower(Trim(filterSacStokYonetimi)), "Malzeme")
- 说明:
Lower统一大小写,Trim去除首尾空格,确保和原Filter的匹配逻辑一致;Search支持云端委托,无论数据量多少都能检索到所有新旧数据。
方法3:预处理数据源(从根源统一格式)
在表单的新增逻辑中,将Malzeme列的内容自动转成小写后存入Excel,比如在表单的OnSuccess或提交按钮中添加:
Patch(SacStokTable, Defaults(SacStokTable), { Malzeme: Lower(Trim(YourForm.Malzeme.Value)), // 其他字段... })
之后就可以用简化的Filter公式,同时配合缓存上限调整或委托支持:
Filter(SacStokTable, Lower(Trim(filterSacStokYonetimi)) in Malzeme)
内容的提问来源于stack exchange,提问作者Musa AKYUZ
相关产品推荐
相关产品推荐

