2017-01-18 7 views
0

Есть некоторые варианты решения проблемы, которые у меня есть сейчас, но не обнаружено до сих пор, достаточных для того, как я хочу ее применять. Я создаю приложение, которое должно иметь уникальную случайную NUMERIC-строку, конкатенированную в ссылочный номер. Вот одно из решений, которые я нашел:Как создать уникальную случайную числовую строку в коде VBA для MS Access

Sub test() 

Dim s As String * 8 'fixed length string with 8 characters 
Dim n As Integer 
Dim ch As Integer 'the character 
For n = 1 To Len(s) 'don't hardcode the length twice 
    Do 
     ch = Rnd() * 127 'This could be more efficient. 
     '48 is '0', 57 is '9', 65 is 'A', 90 is 'Z', 97 is 'a', 122 is 'z'. 
    Loop While ch < 48 Or ch > 57 And ch < 65 Or ch > 90 And ch < 97 Or ch > 122 
    Mid(s, n, 1) = Chr(ch) 'bit more efficient than concatenation 
Next 

Debug.Print s 

End Sub

К сожалению, это только создает одну строку, и это буквенный один. Мне трудно преобразовать код VB.net в VBA, и поэтому мне нужно получить решение VBA для MS Access, которое создает уникальную числовую строку из 5 символов при каждом запуске процедуры.

+0

Есть 100000 пятизначные числовые последовательности из '' 00000' к 99999'. Если вы создаете их с использованием случайных чисел, у вас нет гарантии уникальности. – AlexP

ответ

0

Вы можете использовать:

Dim Number As Long 

Randomize 
Number = Int(Rnd * 10^5) 

Чтобы иметь ведущие нули и строку

Dim Number As Long 

Randomize 
Number = Format(Int(Rnd * 10^5), "00000")