Hjälp - [Microsoft][ODBC Microsoft Access Driver]Error in row
Hej!
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?
Svara
Sv: Hjälp - [Microsoft][ODBC Microsoft Access Driver]Error in row
Hej
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-Karin
Svara
Sv: Hjälp - [Microsoft][ODBC Microsoft Access Driver]Error in row
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).
Svara
Sv: Hjälp - [Microsoft][ODBC Microsoft Access Driver]Error in row
Tack för hjälpen Anna-Karin! Nu funkar det...
Svara