Hej! Hej Fick själv följande fel häromdagen. Jag hade fältet ID, och satt den som PrimaryKey, men glömt att sätta egenskapen AutoIncrement = True (=räknare). Tack för hjälpen Anna-Karin! Nu funkar det...Hjälp - [Microsoft][ODBC Microsoft Access Driver]Error in row
Jag har problem med mitt registreringssystem. När man fyllt i fomuläret och går vidare får man felmedelandet:
Microsoft OLE DB Provider for ODBC Drivers error '80004005'
[Microsoft][ODBC Microsoft Access Driver]Error in row
/addreg.asp, line 165
rad 165 är RecSet.Update
<% Response.Buffer = True %>
<!-- #include virtual="/inc/adovbs.inc" -->
<%
'_______________________________________________________
'Öppnar databas
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=C:\WebShare\Wwwroot\data\databas.mdb"
Set RecSet = Server.CreateObject("ADODB.Recordset")
'_______________________________________________________
'Kontroll av nick och pass och epost
'_______________________________________________________
Addera = "SELECT * FROM members"
RecSet.Open Addera, Connect, adOpenStatic, adLockOptimistic
'_________________________________________
' kollar att du har fyllt i ett lösenord!
If Request.Form("Username") = "" then
Response.Write("<br>Du måste fylla i ett användarnamn! ")
End if
'________________________________________________
'Kollar att användarnamnet inte är upptaget!
X = FALSE
Do Until X = TRUE OR RecSet.EOF
If RecSet("Username") = Request.Form("username") Then
X = TRUE
Exit Do
End If
RecSet.MoveNext
Loop
If X = true then
Response.Write("<br>Användarnamnet är redan upptaget! ")
End if
'________________________________________________
'Kollar att eposten inte är dubbel registrerad!
E = FALSE
Do Until E = TRUE OR RecSet.EOF
If RecSet("E-post") = Request.Form("epost") Then
E = TRUE
Exit Do
End If
RecSet.MoveNext
Loop
If E = true then
Response.Write("<br>Ett konto är redan registrerat på epostadressen "=Request.Form("epost"))
end if
'_________________________________________
' kollar att epost är ifylld!
V = False
If Request.Form("epost") = "" then
V = True
Response.Write("<br>Du måste fylla i en epostadress! ")
end if
'_________________________________________
' kollar att du har fyllt i ett lösenord!
C = False
If Request.Form("password") = "" then
C = True
Response.Write("<br>Du måste fylla i ett lösenord! ")
End if
'________________________________________
'Kontrolerar lösen 1 och 2
P = True
If Request.Form("password") = Request.Form("password2") Then
P = False
End if
If P = True Then
Response.Write("<br>Lösenordet stämmer inte överens med det bekräftande lösenordet! ")
End if
RecSet.Close
If X = False and E = False and V = False and C = False and P = False then
'_____________________________________________
'Inmatning i databasen
'_____________________________________________
Addera = "SELECT * FROM members"
RecSet.Open Addera, Connect, adOpenStatic, adLockOptimistic
RecSet.AddNew
'personlig info
RecSet("Username") = Request.Form("username")
RecSet("Password") = Request.Form("password")
RecSet("E-post") = Request.Form("epost")
'kan ses av andra medlemmar
RecSet("Nick") = Request.Form("nick")
RecSet("Namn") = Request.Form("namn")
RecSet("Alder") = Request.Form("alder")
RecSet("Bor") = Request.Form("bor")
RecSet("Personlighet") = Request.Form("personlighet")
RecSet("Gillar") = Request.Form("gillar")
RecSet("Hatar") = Request.Form("hatar")
RecSet("Musik") = Request.Form("musik")
RecSet("Email") = Request.Form("email")
RecSet("Fordon") = Request.Form("fordon")
RecSet("Korkort") = Request.Form("korkort")
RecSet("Utbildning") = Request.Form("utbildning")
'Rad 165
RecSet.Update
RecSet.Close
Connect.Close
End if %>
Någon som vet vad det kan vara för fel?
Sv: Hjälp - [Microsoft][ODBC Microsoft Access Driver]Error in row
För det första, gör din felkontroll innan du hämtar från databasen, om något är tomt som måste vara med är det onödigt att "springa" till databasen och hämta poster.
Gärna med en flagga, typ ditt X, är X false så stämde allt, om inte så var något fel,
Ändra din första SQL sats till att hämta det användarnamn som användaren vill ha, på så sätt slipper du hämta hela tabellen.
Med en IF sats så kollar du om RS.EOF om den är det så fick du ingen träff, registrera användaren, om ditt RecordSet inte är EOF, dvs End of File så fanns namnet.
Ditt fel beror på att du använder en cursor som är statisk, dvs du kan inte göra något med Recordsetet,
ändra AdOpenStatic till AdOpenKeyset istället.
//Anna-KarinSv: Hjälp - [Microsoft][ODBC Microsoft Access Driver]Error in row
Sv: Hjälp - [Microsoft][ODBC Microsoft Access Driver]Error in row