以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  MD5生成的唯一编码有重复,该怎么优化啊?  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=157808)

--  作者:guosheng
--  发布时间:2020/10/29 16:28:00
--  MD5生成的唯一编码有重复,该怎么优化啊?
只要e.Form.Controls("科目编码" & i)的值一样,生成的md5值都一样。是不是因为执行太快了,i不同时,取的vv值一样造成的?
For i=0 To 9
    If e.Form.Controls("科目编码" & i).value IsNot Nothing
        Dim dr As Row =Tables("accvouch").addnew()
        vv=Date.Today.now()
        dr("凭证随机ID")=MD5Encrypt(vv & e.Form.Controls("科目编码" & i).value)
endif
next
[此贴子已经被作者于2020/10/29 16:28:05编辑过]

--  作者:有点蓝
--  发布时间:2020/10/29 16:30:00
--  
试试
dr("凭证随机ID")=MD5Encrypt(format(vv,"yyyyMMddHHmmssffffff") & e.Form.Controls("科目编码" & i).value)
--  作者:guosheng
--  发布时间:2020/10/29 16:38:00
--  
即使每次执行一次停顿一下,还是重复啊。怎么回事啊?
dr("凭证随机ID")=MD5Encrypt(format(vv,"yyyyMMddHHmmssffffff") & e.Form.Controls("科目编码" & i).value)
messagebox.show(111)

--  作者:有点蓝
--  发布时间:2020/10/29 16:40:00
--  
vv=Date.now()

--  作者:guosheng
--  发布时间:2020/10/29 16:46:00
--  
还是重复啊。
Dim i As Integer
Dim vv As String
For i=0 To 9
        vv=Date.now()
        output.show(MD5Encrypt(format(vv,"yyyyMMddHHmmssffffff")))
Next

--  作者:有点蓝
--  发布时间:2020/10/29 16:57:00
--  
Dim i As Integer
Dim vv As String
For i=0 To 9
        vv=format(Date.Now,"yyyyMMddHHmmssffffff")
        output.show(MD5Encrypt(vv))
Next

--  作者:guosheng
--  发布时间:2020/10/29 17:23:00
--  
时间格式化后给一个变量,再进行md5,确实不重复了。如果把时间格式化后直接给md5函数。两者有啥区别啊?我感觉没啥区别啊。
vv=format(Date.Now,"yyyyMMddHHmmssffffff")


--  作者:有点蓝
--  发布时间:2020/10/29 17:29:00
--  
Dim vv As String = Date.now()
msgbox(vv)
vv = format(Date.Now,"yyyyMMddHHmmssffffff")
msgbox(vv)

--  作者:guosheng
--  发布时间:2020/10/30 9:11:00
--  
按照这个改法还是有重复啊?
Dim i As Integer
Dim vv As String
For i=0 To 9
        vv=format(Date.Now,"yyyyMMddHHmmssffffff")
        output.show(MD5Encrypt(vv))
Next


H5FYjfsQBSk4j7IJ6FYlWQ==
YoWUBDicujOdXCEUxIBblA==
YoWUBDicujOdXCEUxIBblA==
eiqaBOrlSv/1OFT4VXju8w==
XTU5gmbWSyZB2dY0C55WSQ==
XTU5gmbWSyZB2dY0C55WSQ==
3uDe+1AJ7tgUOhEHrIZr0w==
3uDe+1AJ7tgUOhEHrIZr0w==
JJZW07YwSEQVxFndzncOBw==
JJZW07YwSEQVxFndzncOBw==

--  作者:chen37280600
--  发布时间:2020/10/30 9:19:00
--  
如果是为了不重复的随机码,推荐用UUID

output.show(Guid.NewGuid.ToString)

结果:13c22708-d901-4a5e-9d55-440a4ae5c466