You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 16:54:52