最新历史版本 :填报插入数据时自动生成流水号 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. 概述编辑

1.1 问题描述

填报在插入数据的时候,希望能根据当前日期自动生成一个流水号,例如:ABC202108050001,要如何实现呢?

1.2 解决方案

在填报属性处利用公式拼接即可,整个流水号分为三部分:

固定字符串:ABC,直接写即可。

当前日期:20210805,可以使用公式format(today(), "yyyyMMdd")获取。

自增序号:0001,可以利用sql函数,查询出数据库中当前日期下最大的流水号,并加1。

注:由于填报属性中的函数计算是统一在提交动作之前的,所以无法在批量插入多行数据的场景下实现自动生成流水号,本文档只适用于每次插入 1 条数据的场景。

2. 示例编辑

2.1 设计模板

如下图设计表格:

2.2 设置填报属性

如图所示设置填报属性:

id 列绑定的公式为:CONCATENATE("ABC", format(today(), "yyyyMMdd"), format(sql("sqlserver", "SELECT max(right(id,4)*1) maxid FROM [dbo].[流水号] where SUBSTRING(id,4,8)=CONVERT(varchar(100), GETDATE(), 112)", 1, 1) * 1 + 1, "0000"))

该公式中的 SQL 函数作用为取出数据表中 id 列中的日期等于当前日期的数据,并截取出最后四位转为数字。具体 SQL 写法需要根据实际数据库类型和需求进行修改。

2.3 效果预览

保存模板,点击填报预览,效果如下图所示:

1.gif

支持 App 端和 HTML5 端预览。

3. 模板下载编辑

已完成模板参见:%FR_HOME%\webroot\WEB-INF\reportlets\doc\Form\填报插入数据时自动生成流水号.cpt

点击下载模板:填报插入数据时自动生成流水号.cpt