找回密码
 立即注册

QQ登录

只需一步,快速开始

qsy_2021

中级会员

51

主题

188

帖子

859

积分

中级会员

积分
859
qsy_2021
中级会员   /  发表于:2021-12-3 00:34  /   查看:3279  /  回复:11
28金币
本帖最后由 Timothy.Xu 于 2021-12-3 14:05 编辑

例如:一张表有苹果001 002 003 ,香蕉001 002 003,我删除香蕉002,再次增加香蕉类的就是002。

最佳答案

查看完整内容

您好,我看您意思,是不是两个需求: 第一点,废号需要重用; 第二点,前面字段值组合发生变化的时候,顺序还要往下排,而不是重新计算。 这两个分开说哈: 第二点,这个选择废号重用的重用就可以了: 第二点,目前的自动编号确实会在字段值组合发生变化的时候重新计算的。因为这个版本之前,自动编号还没有添加字段功能,根据我们了解到的需求场景,可能是目前的做法更普遍一些,我们也是基于这些需求实现了现在的功 ...

11 个回复

倒序浏览
qsy_2021
中级会员   /  发表于:2021-12-3 09:33:29
来自 9#
successit 发表于 2021-12-3 08:44
我用这个DEMO测试的,你可以看看,如果你编号是类别加流水的形式,为什么不用自动编号呢?或者你做个简单DE ...


中间字母有变化就变成了01了,我们唯一值是左边的串码,AA代表水果的包装箱类别,后面的就是编码。按道理AB应该是06

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
最佳答案
最佳答案
Timothy.Xu讲师达人认证 悬赏达人认证 活字格认证
论坛元老   /  发表于:2021-12-3 00:34:57
来自 10#
本帖最后由 Chelsey.Wang 于 2021-12-3 14:11 编辑

您好,我看您意思,是不是两个需求:
第一点,废号需要重用;
第二点,前面字段值组合发生变化的时候,顺序还要往下排,而不是重新计算。

这两个分开说哈:
第二点,这个选择废号重用的重用就可以了:



第二点,目前的自动编号确实会在字段值组合发生变化的时候重新计算的。因为这个版本之前,自动编号还没有添加字段功能,根据我们了解到的需求场景,可能是目前的做法更普遍一些,我们也是基于这些需求实现了现在的功能。

综上所述,您这个需求可能不能用目前的自动编号来做,可以使用服务端命令来写这个生成编号的逻辑。大概的思路如下:
1、将顺序号保存一个新的文本类型字段,然后用公式字段将其转换为数字类型,方便参与后续计算;
2、用服务端命令来遍历当前顺序号,找到顺序号数组里最小的“缺少的”序号,即为需要的目标序号;
3、存储的时候,将这个序号用TEXT公式转换成文本,然后存储;
4、再用一个公式字段,将固定文本、字段、顺序号频出自动编号。

具体的做法:
1、用公式字段,这种写法可以将文本数字转化为数字类型:



2、在服务端命令中进行计算。这里的核心思路是,先用设置变量命令拿到顺序号的数组。
注意要倒序排列,因为中间断掉的号可能不止一个,我们会从大到小找到最小的那个断掉的号。
具体的查找方法是在循环中查找当前序号+1的值是否存在,如果不存在,就让目标序号=当前序号+1。
这种计算方式可能会漏掉序号为1的情况,那么我们再在流程最开始做一个判断,如果序号为1的值不存在,那么直接把序号返回1。



(顺便也做了废号不重用的情况,这种比较简单,取序号最大值+1就可以了)

具体在服务端命令的关键步骤都有注释,这个原理其实不是很复杂,但是我们做一个功能,肯定要考虑到多种特殊情况,比如说当前数据为0,断掉的序号刚好为1这种情况,才能保证最后的逻辑足够健壮。

3、为了方便展示,我专门把这个服务端命令放在了一个按钮里,生成序号后,需要另一个单元格来引用序号,并通过TEXT函数计算出需要的格式,比如把数字1变成文本“001”,而这个也是我们最终需要存储的:



4、最后存储后,用公式字段来展示最终自动编号:



附demo:


注:最终在实现的时候,肯定是需要把数据表操作命令和这个服务端命令做到一个更大的服务端命令里,在一个事物中实现的,这部分就不赘述了,但是为了保证处理掉并发冲突,事物一致性是必要的。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
successit悬赏达人认证
银牌会员   /  发表于:2021-12-3 08:02:48
2#
本帖最后由 successit 于 2021-12-3 08:06 编辑

设计器中数据表字段自动编号里有废号重用模式,设置为重用,是不是可以解决你的问题
实测,可以的!
回复 使用道具 举报
qsy_2021
中级会员   /  发表于:2021-12-3 08:37:59
3#
不采用自动编号!注意
回复 使用道具 举报
qsy_2021
中级会员   /  发表于:2021-12-3 08:38:33
4#
successit 发表于 2021-12-3 08:02
设计器中数据表字段自动编号里有废号重用模式,设置为重用,是不是可以解决你的问题
实测,可以的!

不可以
回复 使用道具 举报
qsy_2021
中级会员   /  发表于:2021-12-3 08:38:33
5#
successit 发表于 2021-12-3 08:02
设计器中数据表字段自动编号里有废号重用模式,设置为重用,是不是可以解决你的问题
实测,可以的!

不可以
回复 使用道具 举报
successit悬赏达人认证
银牌会员   /  发表于:2021-12-3 08:43:11
6#

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
successit悬赏达人认证
银牌会员   /  发表于:2021-12-3 08:44:11
7#
我用这个DEMO测试的,你可以看看,如果你编号是类别加流水的形式,为什么不用自动编号呢?或者你做个简单DEMO上来看看
回复 使用道具 举报
qsy_2021
中级会员   /  发表于:2021-12-3 08:56:53
8#
successit 发表于 2021-12-3 08:44
我用这个DEMO测试的,你可以看看,如果你编号是类别加流水的形式,为什么不用自动编号呢?或者你做个简单DE ...

亲 一张表,注意是一张表出现的
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部