Power Apps中SQL表[SOP10100]MBO类编号自动递增实现问题
实现SOPNUMBE编号自动递增功能的问题
- 场景:SQL表[SOP10100]中存在多种类型的SOPNUMBE编号,需实现以"MBO"开头的编号自动+1功能,预期首条新增记录为
MBO0000003,下一条为MBO0000004 - 当前遇到的问题:
- 执行以下脚本仅能获取到最后一条值
MBO0000002:Last(Filter(SOP10100,StartsWith(SOPNUMBE,"MBO"))).SOPNUMBE - 尝试提取编号数字部分时返回空值:
Right(Last(Filter(SOP10100,StartsWith(SOPNUMBE,"MBO"))).SOPNUMBE,3)
- 执行以下脚本仅能获取到最后一条值
解决方案
1. 修正最大编号的获取逻辑
Last(Filter(...))无法保证拿到最大编号,因为Filter返回的结果顺序不固定,必须先按编号降序排序,再取第一条(或最后一条)。同时你的编号数字部分是7位,之前取3位的逻辑错误,要提取全部数字:
// 获取MBO开头的最大编号的数字部分 varMaxNum = Value(Right(First(Sort(Filter(SOP10100, StartsWith(SOPNUMBE, "MBO")), SOPNUMBE, Descending)).SOPNUMBE, 7))
2. 生成递增后的新编号
将数字+1后,补零格式化为7位,再拼接前缀:
"MBO" & Text(varMaxNum + 1, "0000000")
完整整合脚本
Set( varNewSOPNum, "MBO" & Text( Value(Right( First(Sort(Filter(SOP10100, StartsWith(SOPNUMBE, "MBO")), SOPNUMBE, Descending)).SOPNUMBE, 7 )) + 1, "0000000" ) )
错误原因说明
- 未排序直接取Last:Filter返回的记录顺序不按编号大小排列,导致拿到的不是最大编号
- Right函数参数错误:编号数字部分是7位,取3位无法获取完整数字,转换为数值时失败返回空值
内容的提问来源于stack exchange,提问作者Desmond Sim
相关产品推荐
相关产品推荐

