以文本方式查看主题

-  易表在线答疑  (http://egrid2000.com/dvbbs/index.asp)
--  用户社区  (http://egrid2000.com/dvbbs/list.asp?boardid=2)
----  [求助]如何缩短Ukey()自动生成的编号?  (http://egrid2000.com/dvbbs/dispbbs.asp?boardid=2&id=16758)

--  作者:hayz
--  发布时间:2009/3/28 18:02:00
--  [求助]如何缩短Ukey()自动生成的编号?
我用UKey()自动生成一个编号,例如0QM2SMGCMBUX483,但是位数太多了,很难记住,我想只保留前6位或后6位数,不知道公式该怎样写? 如果还要在编号上加多个当天日期在前面呢?例如要实现下面的样式:

090328-0QM2SM

我试过用formAT公式但不知怎样写,希望帮忙看看。谢谢


--  作者:程兴刚
--  发布时间:2009/3/28 18:16:00
--  
既然减少位数,就不要用UKey,因为减少位数后,重复几率大大提高,这样用就没有意义了,完全可以用其他办法解决!
--  作者:Czy
--  发布时间:2009/3/28 18:20:00
--  
Format(today(),"yymmdd")+"-"+Left(text(UKey()),6)
--  作者:hayz
--  发布时间:2009/3/28 18:29:00
--  
因为每天只会随机产生1~200张单,所以其实保留4位都很少有机会重复。加上日期参数后到了下一天又等于是重新再计算过,所以理论上重复机率是很低的。

谢谢两位版主的帮忙,czy的公式非常合用。

之前总是想着用format完成,没想到原来应该用left。看来我学习易表还要继续努力啊。


--  作者:yangming
--  发布时间:2009/3/28 18:47:00
--  
那一开始就没有必要用UKey()生成编号了,一开始就用日期加相应的字符生成编号不好吗?
--  作者:程兴刚
--  发布时间:2009/3/28 18:52:00
--  
下面引用由yangming2009/03/28 06:47pm 发表的内容:
那一开始就没有必要用UKey()生成编号了,一开始就用日期加相应的字符生成编号不好吗?


     我也是这意思啊最简单就是:format(today(),"yymmdd")+"-"+format(row,"0000")还省一列。


--  作者:hayz
--  发布时间:2009/3/29 8:21:00
--  
如果是单机用户的话此公式是最好的,但我用在局域网多用户就不同情况了.

一起保存后就会有重号出现,所以我觉得还是原来的思路比较合用.

不好意思,主要是我没写清问题,下次改正.^_^