如何产生由数字和英文字母组成的随机序列号
比如:
1WDR45E5I
3R5JIRWWE3B33
4RTY464FERLJT8I这样一个序列,主要是用在产品的序列号上,一个产品用一个序列号,长度固定或可变都可以,要能产生无数个随机序列号.请各位大侠帮帮忙,小弟VB只懂皮毛.
比如:
1WDR45E5I
3R5JIRWWE3B33
4RTY464FERLJT8I这样一个序列,主要是用在产品的序列号上,一个产品用一个序列号,长度固定或可变都可以,要能产生无数个随机序列号.请各位大侠帮帮忙,小弟VB只懂皮毛.
在调用 Rnd 之前,先使用无参数的 Randomize 语句初始化随机数生成器,该生成器具有根据系统计时器得到的种子。为了生成某个范围内的随机整数,可使用以下公式:Int((upperbound - lowerbound + 1) * Rnd + lowerbound)这里,upperbound 是随机数范围的上限,而 lowerbound 则是随机数范围的下限。
Dim s As String, t As String
Dim i As Long, nlen As String, n As Long
s = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
nlen = 16 '计算16位长度的随机串
For i = 1 To nlen
n = CLng(Rnd * 35 + 1)
t = t & Mid(s, n, 1)
Next
Debug.Print t
Print t
End Sub
Private Sub Command1_Click()
Dim s As String, t As String
Dim i As Long, nlen As String, n As Long
Randomize
s = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
nlen = 16 '计算16位长度的随机串
For i = 1 To Rnd * 35 + 1
n = CLng(Rnd * 35 + 1)
t = t & Mid(s, n, 1)
Next
Print t
End Sub
DateSerial+TimeSerial
Private Declare Function StringFromGUID2 Lib "ole32.dll" (pGuid As GUID, ByVal PointerToString As Long, ByVal MaxLength As Long) As Long
Private Const GUID_OK As Long = 0
Private Type GUID
Guid1 As Long
Guid2 As Integer
Guid3 As Integer
Guid4(0 To 7) As Byte
End Type
Public Function CreateGUIDKey() As String
Const GUID_LENGTH As Long = 38
Dim udtGUID As GUID
Dim strFormattedGUID As String
Dim lngResult As Long
lngResult = CoCreateGuid(udtGUID)
If lngResult = GUID_OK Then
strFormattedGUID = String$(GUID_LENGTH, 0)
StringFromGUID2 udtGUID, StrPtr(strFormattedGUID), GUID_LENGTH + 1
Else
strFormattedGUID = ""
End If
CreateGUIDKey = strFormattedGUID
End Function
调用:
dim code as string
code=CreateGUIDKeycode就是全球唯一序列号了,如果不要里面的“{”和“-”,自己替换成空即可。
呵呵,收藏
http://www.vbaccelerator.com/home/VB/Tips/Create_GUIDs/article.asp