Добрый день, мне нужна помощь. Есть десятки способов, которые бы сделать трюк, что им собирается спросить, но который будет быстро (я hopefull я с видом на некоторые)Самый быстрый способ проверить в связанной таблице, что запись еще не существует
У меня есть 2 метода в настоящее время, как медленные, так и сверхмедленных (2 быстрее)
Вещь, которую он делает, создает новые записи, если сгенерированное случайное число уже не существует в связанной таблице.
Чем больше стол становится слишком заполненным, тем медленнее будет работать код. в ближайшем будущем, возможно, потребуется несколько дней, чтобы добавить только несколько кодов.
бит кода, добавить рекорды:
Sub MakenNieuweNummers(AantalNieuweNummers As Long, strProduct As String, strBatch As String)
Dim strCode As String
Dim AantalNummersGemaakt As Long
Dim strSQL As String
'Vul hier het aantal nieuwe gewenste nummers in om de database mee uit te breiden
Do While AantalNummersGemaakt < AantalNieuweNummers
DoEvents
strCode = randomstring(6)
If DCount("code", "tblNummers", "code = '" & strCode & "'") = 0 Then
strSQL = "insert into tblNummers " & _
"(code,actief,printdatum,product,batchnummer) " & _
"VALUES ('" & strCode & "',TRUE,#" & Format(Date, "MM-DD-YYYY") & "#,'" & strProduct & "','" & strBatch & "')"
dbLocal().Execute strSQL
AantalNummersGemaakt = AantalNummersGemaakt + 1
End If
Loop
End Sub
Sub MakenNieuweNummers2(AantalNieuweNummers As Long, strProduct As String, strBatch As String)
Dim strCode As String
Dim AantalNummersGemaakt As Long
Dim strSQL As String
'Vul hier het aantal nieuwe gewenste nummers in om de database mee uit te breiden
Do While AantalNummersGemaakt < AantalNieuweNummers
DoEvents
strCode = randomstring(6)
If dbLocal().OpenRecordset("SELECT Count([ID]) AS [CountALL] FROM tblNummers WHERE code='" & strCode & "';")![CountALL] = 0 Then
strSQL = "insert into tblNummers " & _
"(code,actief,printdatum,product,batchnummer) " & _
"VALUES ('" & strCode & "',TRUE,#" & Format(Date, "MM-DD-YYYY") & "#,'" & strProduct & "','" & strBatch & "')"
dbLocal().Execute strSQL
AantalNummersGemaakt = AantalNummersGemaakt + 1
End If
Loop
End Sub
также немного кода для случайных строк, которые возвращаются из функции
Function randomstring(Optional iLengte As Integer) As String
If IsMissing(iLengte) Then
iLengte = 6
End If
Randomize
Do While Len(randomstring) < iLengte
randomstring = randomstring & Mid(sReeks, Int((Len(sReeks)) * Rnd) + 1, 1)
Loop
End Function
Любая помощь очень ценится.
благодарит заранее.