---
title: "Användarnamnet redan taget..."
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/100404-användarnamnet-redan-taget"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "magnusfeldth"
published: "2004-03-27T13:57:09.000Z"
updated: "2004-03-31T08:18:09.000Z"
replies: 7
views: 310
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/asp/100404-användarnamnet-redan-taget"
---

# Användarnamnet redan taget...

## #1 — magnusfeldth, 2004-03-27T13:57Z

Efter att jag lagt till en javakod som kollar efter förbjudna tecken har ett registreringsscript lagt av. Den säger

```
Microsoft OLE DB Provider for ODBC Drivers (0x80040E2F)
[Microsoft][Drivrutin för ODBC Microsoft Access]Fel i rad 
/hhgspunktse/hhgs/nystudentuser.asp, line 92
```

Line 92 är  RecSet.Update... 

Efter en sökning på felmesset har jag fått fram att 0x80040E2F framkommer när man tex redan har ett användarnamn upptaget... men jag har testat och det ska inte vara upptagna namn jag testar med, samt att denna koden (obs, idg-kod, slå mig inte ;) )används för att kolla om användarnamnet redan är upptaget.

```
	X = FALSE

	Do Until X = TRUE OR RecSet.EOF

	If RecSet("Anvandarnamn") = Request.Form("anvandarnamn") Then
	X = TRUE
	Exit Do
	End If

	RecSet.MoveNext

	Loop

	
	If X = TRUE Then 
	Response.Write "Det användarnamn du vill använda är redan taget, vänligen välj ett nytt."

	End If

	If X = FALSE Then 

RecSet.AddNew
```

Vad är problemet?

Permalänk: https://www.webforum.nu/p/100404

## #2 — LarsG, 2004-03-27T14:02Z

Line 92 är RecSet.Update...

Var är den raden då?

Allmänt så är din strategi med att göra jämförelser i applikationen i stället för i databasen helt förkastlig. Ange villkoren direkt  i SQL. Släng den där vansinnigt korkade IDG-koden. (Det finns flera exempel på bättre och enklare skript i inlägg här.)

Fel i rad brukar oftast bero på att du bryter mot något constraint i databasen (check eller foreign key)

Permalänk: https://www.webforum.nu/p/1310590

## #3 — magnusfeldth, 2004-03-27T14:08Z

```
RecSet.AddNew

	RecSet("Anvandarnamn") = Request.Form("Anvandarnamn")
	RecSet("Losenord") = Request.Form("Losenord")
	RecSet("Namn") = Request.Form("Namn")
    RecSet("Epost") = Request.Form("Epost")
   	RecSet.Update
```

...så ser fortsättningen ut... Ja, det är dum idg-kod, har nån en länk till bättre?

Permalänk: https://www.webforum.nu/p/1310592

## #4 — Mog, 2004-03-27T14:46Z

Ett sätt:

```
SELECT COUNT(Anvandarnamn) AS antal FROM tabell WHERE Anvandarnamn = '" & Request.Form("Anvandarnamn") & "'
X = RecSet("antal")
If (X > 0) Then
  Användarnamnet fanns
Else
  INSERT INTO tabell (Anvandarnamn, Losenord, Namn, Epost) _ &
VALUES('" & Request.Form("Anvandarnamn") & "', '" & Request.Form("Losenord") & "', '" & Request.Form("Namn") & "', '" & Request.Form("Epost") & "')
End If
```

 Du måste ju naturligtvis köra SQL-frågorna och pilla ihop det med din kod, men det förstod du säkert.
(är lite osäker på om \_ & innan VALUES är rätt)

Permalänk: https://www.webforum.nu/p/1310603

## #5 — magnusfeldth, 2004-03-30T20:01Z

felmess: Feltyp:

```
Kompileringsfel i Microsoft VBScript (0x800A03FD)
'Case' förväntas.
/hhgspunktse/hhgs/nystudentuser.asp, line 64, column 7
SELECT COUNT(Anvandarnamn) AS antal FROM tabell WHERE Anvandarnamn = '" & Request.Form("Anvandarnamn") & "'
------^
```

```
<%	Set Connect = Server.CreateObject("ADODB.Connection")
	Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" &Server.MapPath("db/hhgsdb.mdb")

	Set RecSet = Server.CreateObject("ADODB.Recordset") SELECT COUNT(Anvandarnamn) AS antal FROM tabell WHERE Anvandarnamn = '" & Request.Form("Anvandarnamn") & "'
X = RecSet("antal")
If (X > 0) Then
Response.Write "Det användarnamn du vill använda är redan taget, vänligen välj ett nytt."

Else
  INSERT INTO tabell (Anvandarnamn, Losenord, Namn, Epost) _ &
VALUES('" & Request.Form("Anvandarnamn") & "', '" & Request.Form("Losenord") & "', '" & Request.Form("Namn") & "', '" & Request.Form("Epost") & "')
End If %>
```

Permalänk: https://www.webforum.nu/p/1311966

## #6 — Mog, 2004-03-30T21:47Z

Utan att analysera felmeddelandet och utan att testa koden;

```
<%
' Ändra [I][B]tabell[/B][/I] till tabellens namn i databasen
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" &Server.MapPath("db/hhgsdb.mdb")
Set RecSet = Server.CreateObject("ADODB.Recordset") 

SQLstr= "SELECT COUNT(Anvandarnamn) AS antal FROM [I][B]tabell[/B][/I] WHERE Anvandarnamn = '" & Request.Form("Anvandarnamn") & "'"
RecSet.Open SQLstr, Connect
X = RecSet("antal")
RecSet.Close
Set RecSet = nothing

If (X > 0) Then
  Response.Write "Det användarnamn du vill använda är redan taget, vänligen välj ett nytt."

Else
  SQLstr = "INSERT INTO [I][B]tabell[/B][/I] (Anvandarnamn, Losenord, Namn, Epost) VALUES('" & Request.Form("Anvandarnamn") & "', '" & Request.Form("Losenord") & "', '" & Request.Form("Namn") & "', '" & Request.Form("Epost") & "')"
  Connect.Execute(SQLstr),,128

End If

Connect.Close
Set Connect = nothing
%>
```

 Hoppas det funkar :)

Permalänk: https://www.webforum.nu/p/1312020

## #7 — Palle, 2004-03-31T07:56Z

Jag hade nog gjort det nått liknande detta.. 

```
[red]<%

Function dbSafe(str)
	str = trim(str)
	If Len(str) > 0 Then dbSafe = Replace(Replace(str, "|",""), "'","''")
End Function

Dim strUserName, strPass, strName, strMail
strUserName = dbSafe(Request.Form("Anvandarnamn"))
strPass = dbSafe(Request.Form("Losenord"))
strName = dbSafe(Request.Form("Namn"))
strMail = dbSafe(Request.Form("Epost"))

Set Connect = Server.CreateObject("ADODB.Connection")
	Connect.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="& Server.MapPath("db/hhgsdb.mdb")
		Set RecSet = Connect.Execute("SELECT Anvandarnamn FROM [b]tabell[/b] WHERE Anvandarnamn='"& strUserName &"'")

			If RecSet.EOF Then
				Connect.Execute("INSERT INTO [b]tabell[/b] (Anvandarnamn, Losenord, Namn, Epost) VALUES('"& strUserName &"', '"& strPass &"', '"& strName &"', '"& strMail &"')"),,128
				Response.Write "Dina uppgifter är sparade.."

			Else
				Response.Write "Det användarnamn du vill använda är redan taget, vänligen välj ett nytt."
			
			End If
			RecSet.Close

		Set RecSet = Nothing
	Connect.Close
Set Connect = Nothing

%>[/red]
```

Permalänk: https://www.webforum.nu/p/1312122

## #8 — magnusfeldth, 2004-03-31T08:18Z

jag såg vad felet var. När jag justerat javascriptet för förbjudna tecken hade jag ändrat i formuläret från "name=anvandarnamn" till id=anvandarnamn.... när jag ändrade tillbaka fungerade både förbjudna tecken och databassparningen.

Tack för all er hjälp!

Permalänk: https://www.webforum.nu/p/1312144

---

Tråden på webben: https://www.webforum.nu/amne/asp/100404-användarnamnet-redan-taget
