webForumDet fria alternativet

kolla unikt värde i db

ASP

5 svar · 202 visningar · startad av web00132

Medlem sedan maj 2001797 inlägg
Frågan#1

Jag har en funktion som genererar ett kundnummer som skrivs in i en databas. Det jag vill göra när jag kör funktionen är att kolla att den genererar ett unikt kundnummer, alltså att kundnumret inte finns i databasen sedan tidigare. Typ...

bOk = False

While Not bOK
  Set rs = connection.Execute ("SELECT strPassword FROM tblData WHERE strPassword = '" & getRandomChars(30) & "'"
  If rs.EOF Then
    bOk = True
    'Lagra lösenordet...
  End If
Wend

...som finns i den här tråden. Problemet är att jag förstår inte vad som ska hända ifall kundnumret redan finns i databasen. Hur ska jag koda för att funktionen och "databaskollen" ska köras igen?

If rs.EOF Then
    bOk = True
    'Lagra lösenordet...
    [I]else
         ?????[/I]
  End If
Medlem sedan mars 20015 287 inlägg
#2

Det gör den som det är nu. I och med While/Wend-loopen.
Mao den loopar tills den hittat ett ok lösenord, ingen ide att skriva ut något eftersom man inte kommer märka att den loopar.

Medlem sedan maj 2001797 inlägg
#3

Men.. hmm. Jag kanske är ute och cyklar men det som gör att den ska köra funktionen som genererar ett nytt kundnummer igen finns ju inte med i while-loopen. Alltså typ ett anrop till funktionen eller liknande. Loopen kollar ju bara om kundnumret finns i databasen och om det inte gör det så läggs det nya kundnumret till. Men vad händer om kundnumret finns?

Min funktion som genrerar ett kundnummer:

function kundnummer()
	Passwordeller = ""

	Randomize

	For i = 1 to 6
	intNum = Int(10 * Rnd + 48)
	intBig = Int(26 * Rnd + 65)
	intSmall = Int(26 * Rnd + 97)
	intRand = Int(3 * Rnd + 1)

	Select Case intRand
	Case 1
	delPasseller = Chr(intNum)
	Case 2
	delPasseller = Chr(intBig)
	Case 3
	delPasseller = Chr(intSmall)
	End Select

	Passwordeller = Passwordeller & delPasseller

	Next

	kundnummer = Passwordeller
end function
Medlem sedan maj 2001797 inlägg
#4

Ingen som förstår vad jag menar?

Medlem sedan jan. 20032 285 inlägg
#5

Något sånt här borde väl funka?

bOk = False

While Not bOK
  strNr = kundnummer()
  Set rs = connection.Execute("SELECT strPassword FROM tblData WHERE strPassword = '" & strNr & "'"

  If rs.EOF Then
    bOk = True
    connection.Execute("INSERT INTO tblData (strPassword) VALUES ('" & strNr & "')"
  End If
Wend
Medlem sedan mars 20015 287 inlägg
#6

Du får väl "givetvis" byta ut den funktion i det kodexempel du visar mot din egen...

bOk = False

While Not bOK
  Set rs = connection.Execute ("SELECT strPassword FROM tblData WHERE strPassword = '" & kundnummer() & "'"
  If rs.EOF Then
    bOk = True
    'Lagra lösenordet...
  End If
Wend

red/ Som Sebbe iofs redan visat ser jag nu, efter en liten uppdatering av sidan. :)

248 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
121 ms — deklarationer (db)
0 ms — hämta statistik (cache)
124 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)