Det fixar du enklast genom att sätta fältet "Namn" i databasen till indexerat, och att inga dubletter får förekomma.
När du sedan kollar
On Error Resume Next
SQL = "INSERT INTO anvandare (Namn, Losen) VALUES ('" & Request.Form("ID") &"','" & Request.Form("losen") &"')"
Connection.Execute(SQL)
If Err.Number Then
Response.Write "Ojsan, det finns redan en sådan användare!"
Else
Response.Redirect("loggain.asp")
End If
asså ska koden se ut så här:
men den funkar inte :-(
<%
IF Request.Form("losen") = Request.Form("losen2") THEN
Set connection = server.createObject("adodb.connection")
connection.open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("db.mdb") & ";"
SQL = "INSERT INTO anvandare (Namn, Losen) VALUES ('" & Request.Form("ID") &"','" & Request.Form("losen") &"')"
Connection.Execute(SQL)
If Err.Number Then
Response.Write "Ojsan, det finns redan en sådan användare!"
Else
Response.Redirect("loggain.asp")
End If
ELSE
session("galet") = "Du måste skriva lika lösen i båda fälten!"
Response.Redirect("blimedlem.asp")
END IF
%>
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'
[Microsoft][ODBC Microsoft Access Driver] The changes you requested to the table were not successful because they would create duplicate values in the index, primary key, or relationship. Change the data in the field or fields that contain duplicate data, remove the index, or redefine the index to permit duplicate entries and try again.
Lugn! Så ska funktionen yttra sig när man gör på detta viset.
Lägg nu till följande:
[b]On Error Resume Next[/b]
SQL = "INSERT INTO anvandare (Namn, Losen) VALUES ('" & Request.Form("ID") &"','" & Request.Form("losen") &"')"
Connection.Execute(SQL)
[b]If Err.Number Then
Connection.Close
Set Connection = nothing
Response.Write "Ojsan, det finns redan en sådan användare!"
response.end
Else
Connection.Close
Set Connection = nothing
Response.Redirect("loggain.asp")
End If[/b]
Vad som händer är att "On Error Resume Next" bara fortsätter med nästa rad om ett fel uppstår.
Och när vi kommer till "If Err.Numb..." kollar vi om det har uppstått något fel (dvs användaren har försökt registrera ett användarnamn som redan finns).
Jag tycker personligen inte att du ska använda det indexerade sättet då det är en del krångligare.
JAg skulle gjort så här i stället.
<%
namn = Request.Form("ID")
SET koll = connection.execute("SELECT namn FROM anvandare WHERE namn = '"&namn&"' ")
if check.eof
' Här kör du Registreringen av den nya användaren
else
' Det användarnamnet finns redan
end if
%>
------------------
MVH // Cyprys Cyprys
Synd att du inte kan köpa en voodoojordglob och sedan snurra på den fort som fan och skrämma skiten ur alla.
Ska man koda på svenska eller engelska ?? Den eviga frågan
Vi kör nått mitt emellan. :r
[r] Vi låter förra inlägget stå kvar som avskräckande exempel :) [/r]
Men är det så mycket snabbare?
Jag försöker alltid att förutspå alla fel i koden i den utsträckning att man slipper använda error.number eller likn.
------------------
MVH // Cyprys Cyprys
Synd att du inte kan köpa en voodoojordglob och sedan snurra på den fort som fan och skrämma skiten ur alla.