webForumDet fria alternativet

BOF och EOF

27 svar · 565 visningar · startad av DiDjo

DiDjoMedlem sedan nov. 2002544 inlägg
#1

Jag får detta meddelande.

ADODB.Field error '80020009' 

Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a current record. 

/!egna/index.asp, line 0

Och den visar allt fram tills denna kod så den måste vara felet!

<%Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & server.mappath ("databas")
Set rs = Server.CreateObject("ADODB.Recordset")
Säkert Felet!--->Addera = "SELECT * FROM didjo"
rs.Open Addera, Connect, 3, 3 
%>
LarsGMedlem sedan dec. 200012 464 inlägg
#2

Det är inte där det är fel, lägg till en kontroll efter open

rs.Open Addera, Connect, 3, 3 
if not rs.eof then 
' all din kod här 
end if
SebbeMedlem sedan jan. 20032 285 inlägg
#3

Kan du visa lite mer av koden? (Under det du har skrivit nu)

DiDjoMedlem sedan nov. 2002544 inlägg
#4

Det ända jag vill göra är att få ut det som står i kolumnen medlemmar i tabellen didjo! Jag har skrivit <%=rs("medlemmar")%> det är det ända och sne har jag stängt rs och connect!

SebbeMedlem sedan jan. 20032 285 inlägg
#5

Då är det bara att använda det som LarsG skrev. (Vilket iofs är en självklarhet ;))

DiDjoMedlem sedan nov. 2002544 inlägg
#6

Hej! Ledsen att jag inte svarat! Har ny dator och var lite problem med den! Men nu fungerar allt! Så här blir felet nu:

error '80020009' 
Exception occurred. 

/!egna/loggain.asp, line 53

Här e koden:

Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & server.mappath ("blablabla något här... .mdb")
Set rs1 = Server.CreateObject("ADODB.Recordset")
Addera = "SELECT * FROM didjo"
rs1.Open Addera, Connect, 3, 3 

53-->rs1("inlogg") = rs1("inlogg") +1

response.redirect("start.asp")

Tabelen heter Didjo och kolumnen inlogg men jag vet inte om man öppnar databasen så där!

trexterMedlem sedan mars 20021 889 inlägg
#7

Du kan inte göra så med RecordSets, i alla fall inte med den uppbyggnaden du har. Om du vill ändra på ett fält i databsen gör du det lättast med ett UPDATE-statement. Vill du lägga det i en variabel, så:

var = RecSet("abc") + 1

:)

DiDjoMedlem sedan nov. 2002544 inlägg
#8

hmmm hur lägger jag in den i min kod? Tar bort rs1("inlogg") lr? Men kan man ändra databas kopplingen eller?

trexterMedlem sedan mars 20021 889 inlägg
#9

Databaskopplingen har inte riktigt med saken att göra.
Om du vill plussa ett fält med ett skriver du en SQL-fråga som du sedan kör.

strSQL = "update t set f = f + 1 where -vad du vill-"
Connect.Execute strSQL,,128

:)

DiDjoMedlem sedan nov. 2002544 inlägg
#10

oki! Jag har testat dit första förslag:
var = RecSet("abc") + 1
Det fungerade inte! Den stannade kvar på noll i databasen! Jag ska prova det andra nu!

solbulleMedlem sedan mars 20015 287 inlägg
#11

Är det meningen att du ska uppdatera alla poster med 1? Annars måste du ha ett vilkor i din sql-fråga,

Addera = "SELECT * FROM didjo where ..... "

Men kör på trexter sista förslag, med where...

Cannabis_TomtenMedlem sedan juli 20015 107 inlägg
#12

DiDjo skrev:

Hej! Ledsen att jag inte svarat! Har ny dator och var lite problem med den! Men nu fungerar allt! Så här blir felet nu:

error '80020009' 
Exception occurred. 

/!egna/loggain.asp, line 53

Här e koden:

Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & server.mappath ("blablabla något här... .mdb")
Set rs1 = Server.CreateObject("ADODB.Recordset")
Addera = "SELECT * FROM didjo"
rs1.Open Addera, Connect, 3, 3 

53-->rs1("inlogg") = rs1("inlogg") +1


response.redirect("start.asp")

Tabelen heter Didjo och kolumnen inlogg men jag vet inte om man öppnar databasen så där!

heter tabellen Didjo? men i koden har du skrivit didjo, stora och små bokstäver.. kanske iof inte har nån ebtydelse.. men men kanske det..

GimboMedlem sedan dec. 20001 626 inlägg
#13

sätt in on error resume next så slipper du problemet med BOF och EOF :)

crisse6Medlem sedan dec. 20002 526 inlägg
#14

Men nu vill vi losa problemet Gimbo! :)

Haller med solbulle och trexter, kor en san update...

pirajanMedlem sedan apr. 2001246 inlägg
#15

Kör en enkel SQL-sats som trexter föreslår:
<%
SQL = "Update tabell Set inlogg = inlogg + 1 Where ..."
Connect.Execute(SQL)
%>

Engine^Medlem sedan dec. 20003 887 inlägg
#16
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Provider = "Microsoft.Jet.OleDB.4.0" [blue]'<--- bättre![/blue]
Connect.DataSource = Server.MapPath("/[i]sökväg[/i]/[i]dindatabas[/i].mdb")
Connect.Open

Set rs1 = Server.CreateObject("ADODB.Recordset")
Addera = "SELECT * FROM didjo"

Set rs1 = Connect.Execute Addera, , 1 

If Not rs1.EOF Then
   [blue]'Uppdatera alla rader i kolumnen inlogg...[/blue]
   Connect.Execute "UPDATE didjo SET inlogg = inlogg + 1;", , 128
End If

Response.Redirect("start.asp")
DiDjoMedlem sedan nov. 2002544 inlägg
#17

fick detta fel då!

Microsoft VBScript compilation error '800a0401' 

Expected end of statement 

/!egna/loggain.asp, line 55 

Set rs1 = Conn.Execute Addera, , 1
-----------------------^

Men jag får inte felet med BOF or EOF längre även om man inte tar med if satsen!

DiDjoMedlem sedan nov. 2002544 inlägg
#18

pirajan skrev:

Kör en enkel SQL-sats som trexter föreslår:
<%
SQL = "Update tabell Set inlogg = inlogg + 1 Where ..."
Connect.Execute(SQL)
%>

Jo men jag har ingen ID i den tabellen och inget att jämföra med! Det jag vill är att kunna se hur många medlemmar som har reggat sig och hur många inloggningar som har hänt! Finns bara två kolumner som heter "inlogg" och "med"

DiDjoMedlem sedan nov. 2002544 inlägg
#19

Jag skickar med hela koden! Så ser ni vad jag vill göra!

<%
namn 	= Request.Form("anv")
losen 	= Request.Form("los")
humor 	= Request.Form("humor")

if Len(losen) <1 OR Len(namn) <1 then
session("felet") = "Du måste skriva in både användarnamn och lösenord"
Response.Redirect("index.asp")
end if

Set connection = server.createObject("adodb.connection")
connection.open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("/db/en databas")";"
SQL = "SELECT * FROM anv WHERE anv = '"&namn&"' AND Losen = '"&losen&"' "
set RS = Connection.Execute(SQL)

IF NOT RS.EOF then
session("inloggad") = "ja"
Session("fel") = ""
session("anv") = rs("anv")
session("user") = rs("anv")
session("vaktare") = rs("vaktare")
if rs("tid")&"" = "" then
session("tid")=0
else
session("tid")=rs("tid")
end if

Response.Cookies("didjocom")("anv") = rs("anv")
Response.Cookies("didjocom").Expires = "December 10, 2010"

Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & server.mappath ("/db/en databas")
Set rs = Server.CreateObject("ADODB.Recordset")
Addera = "SELECT * FROM anv WHERE anv = '"&namn&"' AND Losen = '"&losen&"' "
rs.Open Addera, Connect, 3, 3 

rs("online") = "1"
rs("inlogg")= rs("inlogg") +1
rs("senaste")= now
rs("loggain")= now
rs("humor")= Request.Form("humor")

rs.update

set Connect = Server.CreateObject("ADODB.Connection")
Connect.Provider = "Microsoft.Jet.OleDB.4.0" 
Connect.DataSource = Server.MapPath("/db/en databas")
Connect.Open

Set rs1 = Server.CreateObject("ADODB.Recordset")
Addera = "SELECT * FROM didjo"

Set rs1 = Connect.Execute Addera, , 1 

   Connect.Execute "UPDATE didjo SET inloggn = inloggn + 1;", , 128

Response.Redirect("start.asp")

Else
Session("fel") = "Du skrev fel lösenord eller användarnamn!"
Response.Redirect("index.asp")
end if

RS.close
rs1.close
Connection.Close
connect.Close
%>

Döpte om inlogg till inloggn eftersom jag hade en annan i en annan tabell som hette lika! Men samma fel iaf

solbulleMedlem sedan mars 20015 287 inlägg
#20

Tycker spontant att det där ser lite skumt ut. Först öppnar du databasen... sen öppnar du databasen... ?
Saknar du inte denna rad i den första öppningen:

Set rs = Server.CreateObject("ADODB.Recordset")

132 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)