JiggrMedlem sedan juni 200518 inlägg Om man skapar ett RecSet... typ:
Set RS = Connection.Execute("SELECT * FROM table")
Sen kör man följande kommandon på den
RS.MoveNext
RS.MoveNext
RS.MoveNext
Sen tar man bort nästa rad som RS kommer till, tex:
Connection.Execute("DELETE FROM table WHERE id = x")
Vad kommer då hända om man efter denna kör
RS.MoveNext
Response.write(RS("id") & RS("textmeddelande"))
Vi får anta att kolumnerna som finns i tabellen table är id och textmeddelande.
Kommer ett felmeddelande returneras eller hoppas den över denna helt enkelt? Eller har jag missuppfattat något?
Kan inte testa själv då jag inget har att testa på för tillfället.
Välkommen till Webforum!
Jag fattar inte riktigt vad du menar. Varför skriva så här
RS.MoveNext
RS.MoveNext
RS.MoveNext
Tre gånger? Då kommer du få ett felmeddelande
Så här ska det vara om du ska göra det rätt.
set rs = connect.execute("select * from table")
do until rs.eof
Response.write(RS("id") & RS("textmeddelande"))
rs.movenext
loop
JiggrMedlem sedan juni 200518 inlägg Skrev så bara för att visa att jag bläddrar mig frammåt tre gånger i "RecSettet". Sen tar jag bort där "RecSettet" pekar och försöker skriva ut denna, jag undrar... vad händer då?
JiggrMedlem sedan juni 200518 inlägg Inte blir det väl ett felmeddelande bara för att jag har tre RS.MoveNext i rad föressten?
SannyWMedlem sedan jan. 2003438 inlägg Välkommen!
Nope inget felmeddelande, det funkar att skriva som du gjorde. RS.moveNext gör att du flyttar fram en post i tabellen. Vilket gör att du kommer att skriva ut post nummer 4 i tabellen, som då tidigare var post nummer 5. Det vill säga om då id:et på raden som du tar bort med delet ligger innan post 6. för annars kommer du ta bort posten efter dina moveNext och kommer då inte att synas i utskriften.
/r
Dock skall tilläggas att den blir aningen rörigt att göra så här, bättre att skriva ut i lopp och sätta x=3 för att skriva ut just post 3 eller liknande.
nej du har rätt, det blir inga felmeddelanden om du har rs.movenext i rad. Förhastade mig där.
Du kommer där i mot få detta felmeddelande om du skriver ut ett recordset efter rs.movenext.
Felmeddelande skrev:
ADODB.Field (0x80020009)
Antingen är BOF eller EOF satt till True, eller så har aktuell post raderats. Den begärda åtgärden kräver en aktuell post.
SannyWMedlem sedan jan. 2003438 inlägg
Felmeddelande skrev:
ADODB.Field (0x80020009)
Antingen är BOF eller EOF satt till True, eller så har aktuell post raderats. Den begärda åtgärden kräver en aktuell post.
Detta beror ju på att det inte finns fler poster i databasen.
JiggrMedlem sedan juni 200518 inlägg Det felmeddelandet får man väl bara om man har gått så långt bland posterna att man kommit utanför posterna som finns i databasen eller vad det nu är...
japp, fast jag ska tillläga en sak som jag glömde. Detta inträffar bara om man Loopar ut innehållet i tabellerna. Gör man inte det då får man inte detta felmeddelade.
Såg nu att du inte loopade ut innehållet.
SannyWMedlem sedan jan. 2003438 inlägg
joel_joel88 skrev:
japp, fast jag ska tillläga en sak som jag glömde. Detta inträffar bara om man Loopar ut innehållet i tabellerna. Gör man inte det då får man inte detta felmeddelade.
Det kan jag tyvärr inte hålla med om. Testa att skriv ut efter dina MoveNext så skall du se vad som händer.
Har testat det, händer inget förutom att det skriver ut post 2.
SannyWMedlem sedan jan. 2003438 inlägg Då får du banne mig visa lite kod, för då vet jag inte vad som händer. Hur många poster har du i databasen förresten?
@ndersMedlem sedan juni 200032 969 inlägg
Har testat det, händer inget förutom att det skriver ut post 2.
Om recordsetet har hamnat EOF när du gjort din movenext så lär du väl få ett felmeddelande oberoende av om du loopat eller icke.
Jo då får du ett felmeddelande. Men om man t.ex gör så
här får man inget felmeddelande så länge det är mer än 1 post.
<%
set connect = server.createobject("adodb.connection")
connect.open "Driver={Microsoft Access driver (*.mdb)};dbq=" & server.mappath("test.mdb")
set rs = connect.execute("select * from test")
rs.movenext
Response.write(rs("test"))
%>
@ndersMedlem sedan juni 200032 969 inlägg Nej, det är klart att om recordsetet inte är end of file, så får man inte ett felmeddelande som säger det.
Men är recordsetet end of file, så får man ett felmeddelande om det, oberoende av om du loopat ut datat eller inte.
@nders skrev:
Nej, det är klart att om recordsetet inte är end of file, så får man inte ett felmeddelande som säger det.
Men är recordsetet end of file, så får man ett felmeddelande om det, oberoende av om du loopat ut datat eller inte.
Ja du har rätt. Jag skulle ha skrivit om recordsetet är end of file. Det är jag som har vimsat i så fall.
SannyWMedlem sedan jan. 2003438 inlägg Nu tappade jag den röda tråden lite, men om du är nöjd med svaret/en Jiggr så glöm inte acceptera som slutgiltigt svar uppe till höger.
JiggrMedlem sedan juni 200518 inlägg "men om du är nöjd med svaret/en Jiggr så glöm inte acceptera som slutgiltigt svar uppe till höger."
SannaW
Jasså, ska man göra sånt också? Nåväl, för mig var den knappen längst ner till höger, och nu ska jag klicka på den! =)
@ndersMedlem sedan juni 200032 969 inlägg Längst ner till höger i varje inlägg ja, men det borde vara något inlägg där uppe som är det svar du blev nöjd med. ;)
Välkommen!
LarsGMedlem sedan dec. 200012 464 inlägg Vad som händer beror på vilken
cursortyp som specificerats för recordsetet.