Håller på och bygger en liten community bara för skojs skull.
Har ett litet problem och det är när man ska registrera sitt användarnamn. Jag vill inte ha så att 2 st personer ska kunna ha samma användarnamn.
Jag kontrollerar detta med denna lilla kod:
Username = TRUE
Do Until Username = FALSE OR rs.EOF
If rs("User") = Request.Form("User") Then
Username = FALSE
Response.Write "Användarnamnet är upptaget!"
Exit Do
End If
rs.MoveNext
Loop
Denna kod funkar bra ifall man väljer ett namn som är EXAKT lika som det som redan finns. Den skiljer på stora och små bokstäver.
Jag vill ha så att det INTE skiljer på stora och små bokstäver.
Har jag exempelvis en person men namn "nisse" vill jag inte att någon ska kunna registrera "NISSE".
Kan man fixxa till koden på nått sätt så att detta löser sig eller måste jag skriva en ny kod-lösning?
Det där borde du lösa direkt i SQL-frågan med en WHERE-sats, då behöver du bara göra en EOF-koll, du slipper loopa, och allt går mycket smidigare. Exempel på SQL-fråga:
strSQL = "SELECT * FROM tblUsers WHERE UCase(UserName) = '" & UCase(Replace(Request.Form("UserName"), "'", "''")) & "'"
Ja, det låter ju smidigt. Synd bara att jag är så dum och inte fattar :(
Här är koden i sin helhet. Om nån orkar ändra om den och lägga in @nders lösning kanske...
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("data/members.mdb") & ";pwd=;"
Set rs = Server.CreateObject("ADODB.Recordset")
SQL = "SELECT * FROM login"
rs.Open SQL, Connect, adOpenStatic, adLockOptimistic
Username = TRUE
Do Until Username = FALSE OR rs.EOF
If rs("User") = Request.Form("User") Then
Username = FALSE
Response.Write "Användarnamnet är upptaget!"
Exit Do
End If
rs.MoveNext
Loop
If Username = TRUE THEN
rs.AddNew
rs("User") = Request.Form("User")
rs.Update
rs.Close
Connect.Close
End If