呕心沥血整理的一个自动编号解决方案

楼主
我是社区第59718位番薯,欢迎点我头像关注我哦~

  老生常谈  自动编号
  1.简单粗暴   用帆软自带的uuid  永不重复
  2.有特殊需求的编号 有自定义格式的
   ① 首推的方法 ,个人思路,可以在使用中感受
       if(len(sql("GJLOrders","select max(t.Ht_code) Ht_code from Ht_manage t where t.Ht_code like 'HT"+FORMAT(TODAY(),"yyyyMMdd")+"%'",1,1))==0,"HT"+FORMAT(TODAY(),"yyyyMMdd")+"00001",
CONCATENATE(
left(sql("GJLOrders","select max(t.Ht_code) Ht_code from Ht_manage t where t.Ht_code like 'HT"+FORMAT(TODAY(),"yyyyMMdd")+"%'",1,1),10),
RIGHT(CONCATENATE("00000000000",
RIGHT(sql("GJLOrders","select max(t.Ht_code) Ht_code from Ht_manage t where t.Ht_code like 'HT"+FORMAT(TODAY(),"yyyyMMdd")+"%'",1,1),5)+1),5))
) 好吧 这里丢人了
公式改为
  1. if(len(sql("GJLOrders","select max(t.Ht_code) Ht_code from Ht_manage t where t.Ht_code like 'HT"+FORMAT(TODAY(),"yyyyMMdd")+"%'",1,1))==0,"HT"+FORMAT(TODAY(),"yyyyMMdd")+"00001",
  2. CONCATENATE(
  3. left(sql("GJLOrders","select max(t.Ht_code) Ht_code from Ht_manage t where t.Ht_code like 'HT"+FORMAT(TODAY(),"yyyyMMdd")+"%'",1,1),10),
  4. format(
  5. RIGHT(sql("GJLOrders","select max(t.Ht_code) Ht_code from Ht_manage t where t.Ht_code like 'HT"+FORMAT(TODAY(),"yyyyMMdd")+"%'",1,1),5)+1),"00000")
  6. )
复制代码



好长的公式 实际很简单 查询到当日最大的.然后尾号加1  就酱 。
并发防重复: 设置主键 并且吧公式绑定给字段
②整理的论坛高手的其他方式
  http://bbs.fanruan.com/thread-69961-1-1.html
  http://bbs.fanruan.com/thread-69750-1-1.html

欢迎补充和完善 越简单越好 越叼越好

分享扩散:
参与人数 +2 F豆 +2 理由
波斯猫 + 1 赞一个!
gxy120313 + 1 赞一个!

查看全部评分

沙发
发表于 2016-1-21 16:53:01
支持!!!
板凳
发表于 2016-1-21 18:56:01
{:5_133:}{:5_133:}
地板
发表于 2016-1-21 21:09:26
{:8_209:}{:8_209:}{:8_209:}
5楼
发表于 2016-1-22 09:16:53
{:8_209:}

顶顶顶
6楼
发表于 2016-1-22 10:35:00
  
7楼
发表于 2017-9-30 07:19:14

学习了,我是小白,不知道怎么来实现,请赐教!
8楼
发表于 2017-10-4 18:48:11
来自手机
9楼
发表于 2019-7-9 22:02:35
@wzh5788 您好  在学习finereport,看到您发的关于自动编号的帖子,我根据我的数据进行了修改。但是运行提示参数错误。我需要做的是查询数据连接名为“MySQL”中叫njglyy这个数据库中,全院设备库的这张表,在录入新设备时自动编号。编号前缀时ZL-ZCKP+yyyyMMdd+五位编号,这五位编号是自动生成的。
我在您发的编码基础上进行了修改,具体代码如下:

if(len(sql("mysql","select max(t.设备编码) 设备编码 from 全院设备库 t where t.设备编码 like 'ZL-ZCKP"+FORMAT(TODAY(),"yyyyMMdd")+"%'",1,1))==0,"ZL-ZCKP"+FORMAT(TODAY(),"yyyyMMdd")+"00001",CONCATENATE(left(sql("mysql","select max(t.设备编码) 设备编码 from 全院设备库 t where t.设备编码 like ' ZL-ZCKP"+FORMAT(TODAY(),"yyyyMMdd")+"%'",1,1),15),format(RIGHT(sql("mysql","select max(t.设备编码) 设备编码 from 全院设备库 t where t.设备编码 like 'ZL-ZCKP"+FORMAT(TODAY(),"yyyyMMdd")+"%'",1,1),5)+1),"00000"))

运行时提示错误的公示参数,我是一个初学者,对SQL不是太了解,看了半天没有发现问题出在哪,所以这里想请求您有空时帮我看看我的代码哪里出现了问题。谢谢您了
编辑于 2019-7-9 22:04  
编辑于 2019-7-9 22:05  
编辑于 2019-7-9 22:35  


找到了问题   是括号的位置问题,最后应该是:
if(len(sql("mysql","select max(t.设备编码) 设备编码 from 全院设备库 t where t.设备编码 like 'ZL-ZCKP"+FORMAT(TODAY(),"yyyyMMdd")+"%'",1,1))==0,"ZL-ZCKP"+FORMAT(TODAY(),"yyyyMMdd")+"00001",CONCATENATE(left(sql("mysql","select max(t.设备编码) 设备编码 from 全院设备库 t where t.设备编码 like ' ZL-ZCKP"+FORMAT(TODAY(),"yyyyMMdd")+"%'",1,1),15),format(RIGHT(sql("mysql","select max(t.设备编码) 设备编码 from 全院设备库 t where t.设备编码 like 'ZL-ZCKP"+FORMAT(TODAY(),"yyyyMMdd")+"%'",1,1),5)+1,"00000")))
编辑于 2019-7-9 23:02  
10楼
发表于 2019-7-9 22:03:55
查晓俊 发表于 2019-7-9 22:02
@wzh5788 您好  在学习finereport,看到您发的关于自动编号的帖子,我根据我的数据进行了修改。但是运行提 ...

fr提示的错误代码是:
http-nio-8075-exec-4 ERROR [standard] 错误代码:11200003 错误的公式参数com.fr.function.FORMAT@6b033d12
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

返回顶部 返回列表