关于填报时自动生成流水单号

要做一个申请的报表,需要生成流水单号,按照文档里的sql写了填报,但是经过测试发现无法实现插入数据时自增长,多条数据皆为同一单号,麻烦帮忙看看需要改动哪里

CONCATENATE("BGYP", format(today(), "yyyyMMdd"), format(sql("finereport", "SELECT max(right(id,4)*1) maxid FROM BGYP_BPM where SUBSTRING(id,4,8)=CONVERT(varchar(100), GETDATE(), 112)", 1, 1) * 1 + 1,"0000"))

FineReport 林夕丶 发布于 2021-11-19 10:12
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共4回答
最佳回答
0
林夕丶Lv4见习互助
发布于2021-11-19 11:40

CONCATENATE("BGYP", format(today(),"yyyyMMdd"), sql("finereport", "SELECT lpad(NVL(max(substr(id,13,4))+1,1),4,0) FROM BGYP_BPM", 1, 1))

最佳回答
0
snrtuemcLv8专家互助
发布于2021-11-19 10:14(编辑于 2021-11-19 10:16)

这个流水号,是针对单条数据录入的

一起多条数据一个页面同时录入,这个流水号肯定一样

==================

要么使用数据库自动生成流水号方案

https://bbs.fanruan.com/thread-94635-1-1.html

  • 林夕丶 林夕丶(提问者) 不是,我是单条记录多次录入,但是生成的单号都是一样的
    2021-11-19 10:34 
  • snrtuemc snrtuemc 回复 林夕丶(提问者) 这个CONVERT(varchar(100), GETDATE(), 112)返回的是yymmdd格式,而你的SUBSTRING(id,4,8)返回的会前面yymmdd对的上吗,可以把sql()函数查询出来的在页面展示下看对不对
    2021-11-19 10:38 
最佳回答
0
北纬六十六度Lv4初级互助
发布于2021-11-19 10:19

SUBSTRING(id,4,8) 写错了吧

最佳回答
0
檬茶茶Lv4初级互助
发布于2021-11-19 10:59

CONCATENATE("BGYP", format(today(), "yyyyMMdd"), format(sql("finereport", "SELECT max(right(id,4)*1) maxid FROM BGYP_BPM where SUBSTRING(id,4,8)=CONVERT(varchar(100), GETDATE(), 112)", 1, 1) * 1 + 1,"0000"))

你这里面的加1换成加seq()试试

  • 林夕丶 林夕丶(提问者) 还是一样的,生成单号都是同一单号
    2021-11-19 11:05 
  • 檬茶茶 檬茶茶 回复 林夕丶(提问者) 截个图看看你怎么写的
    2021-11-19 11:28 
  • 3关注人数
  • 556浏览人数
  • 最后回答于:2021-11-19 11:40
    请选择关闭问题的原因
    确定 取消
    返回顶部