PowerApps如何实现MBO前缀固定7位数字递增加1自动编号
PowerApps 实现MBO前缀步长1自动编号方案
原有代码问题
你当前写的逻辑存在3个核心错误,无法实现需求:
- 筛选条件错误:
Filter(SOP10100,SOPNUMBE = SOGALLERY.Selected.SOPNUMBE)取到的是当前画廊选中的单条记录,不是全表最大编号,计算基准完全错误 - 类型运算错误:直接对带
MBO前缀的文本类型编号做+1数值运算,会触发类型不匹配报错 - 格式化规则错误:格式串
"MBO#,#######"中#是可选数字占位符,不会自动补前导零,生成的编号长度不固定,不符合7位数字的要求
正确实现代码
将新增记录时给SOPNUMBE字段赋值的公式替换为以下内容即可:
With( { // 按编号倒序取第一条,拿到当前表内最大编号 CurrentMaxNo: First(Sort(SOP10100, SOPNUMBE, SortOrder.Descending)).SOPNUMBE }, If( // 表内无记录时直接返回首条编号 IsBlank(CurrentMaxNo), "MBO0000001", // 提取编号后7位数字部分+1,补零后拼接前缀 "MBO" & Text(Value(Right(CurrentMaxNo, 7)) + 1, "0000000") ) )
关键逻辑说明
- 取最大编号用
Sort+First替代Last+Filter,不需要全表遍历匹配,性能更高,也不会出现取数错误 - 编号拆分处理:固定前缀
MBO和7位数字部分分开计算,避免文本和数值混算报错 - 数字格式化用
"0000000"作为格式串,不足7位的数字会自动补前导零,严格符合MBO0000001、MBO0000002的顺延规则 - 增加空值判断,表内无初始记录时自动生成首条编号,不会出现空值计算错误
内容的提问来源于stack exchange,提问作者Desmond Sim
相关产品推荐
相关产品推荐

