webForumDet fria alternativet

MoveNext utan Loop

14 svar · 403 visningar · startad av Bjarne A

Bjarne AMedlem sedan feb. 2001151 inlägg
#1

Jag skall byta plats på två poster i en databas

posten med posten under i databasen
Jag trodde det vara att bara be vänligt att den skulle gå till nästa med MoveNext men den väljer samma postrad

<%
Dim idnummer
idnummer = Request.QueryString("artikel")
%>
<%
SQL = "SELECT * FROM soff WHERE id = " & idnummer & ""
set Rs = connect.execute(SQL)

Dim nurubrik
nurubrik = Rs("rubrik")
Dim nuingress
nuingress = Rs("ingress")
Dim nutext2
nutext2 = Rs("text2")
RS.MoveNext
set Rs2 = connect.execute(SQL) 
Dim senid
senid = Rs2("id")
Dim senrubrik
senrubrik = Rs2("rubrik")
Dim seningress
seningress = Rs2("ingress")
Dim sentext2
sentext2 = Rs2("text2")

SQL2 = "UPDATE soff SET rubrik = '" & nurubrik & "', ingress = '" & nuingress & "', text2 = '" & nutext2 & "' WHERE ID = " & senid & ""
SQL3 = "UPDATE soff SET rubrik = '" & senrubrik & "', ingress = '" & seningress & "', text2 = '" & sentext2 & "' WHERE ID = " & idnummer & ""
connect.Execute(SQL2)
connect.Execute(SQL3)
%>
solbulleMedlem sedan mars 20015 287 inlägg
#2

För det första innehåller ditt recset endaast en post om id är unikt.
Vad är det egentligen du vill uppnå med att byta plats på posterna?

LarsGMedlem sedan dec. 200012 464 inlägg
#3

Eftersom du ställer samma fråga två gånger så får du samma data. Du kan använda denna fråga när du hämtar data till rs2

sql = "select * FROM soff WHERE id > " & idnummer 
set rs2 = connect.execute(sql)
if not rs2.eof then
'...

Du kan aldrig förutsätta att du alltid får data tillbaka, så du måste alltid ha med en kontroll på att eof inte är sant.

Bjarne AMedlem sedan feb. 2001151 inlägg
#4

solbulle skrev:

För det första innehåller ditt recset endaast en post om id är unikt.
Vad är det egentligen du vill uppnå med att byta plats på posterna?

Den skall börja sin hämtning vid den unika posten och sedan posten under var det tänkt

Jag hämtar in posterna uppifrån och ner och vill kunna byta plats på dom

Bjarne AMedlem sedan feb. 2001151 inlägg
#5

Nu försökte jag så här men den tar ju samma post igen för att jag anropar samma SQL

Skall man göra två SQL anrop och hur får man den att gå ett steg framåt WHERE id = " & idnummer & "" + ett steg fram

<%
SQL = "SELECT * FROM soff WHERE id = " & idnummer & ""
set Rs = connect.execute(SQL)
if not RS.eof then
Dim nurubrik
nurubrik = Rs("rubrik")
Dim nuingress
nuingress = Rs("ingress")
Dim nutext2
nutext2 = Rs("text2")
RS.MoveNext
set Rs = connect.execute(SQL)
Dim senid
senid = Rs("id")
Dim senrubrik
senrubrik = Rs("rubrik")
Dim seningress
seningress = Rs("ingress")
Dim sentext2
sentext2 = Rs("text2")
End if

SQL2 = "UPDATE soff SET rubrik = '" & nurubrik & "', ingress = '" & nuingress & "', text2 = '" & nutext2 & "' WHERE ID = " & senid & ""
SQL3 = "UPDATE soff SET rubrik = '" & senrubrik & "', ingress = '" & seningress & "', text2 = '" & sentext2 & "' WHERE ID = " & idnummer & ""
connect.Execute(SQL2)
connect.Execute(SQL3)
%>

:) :)

Bjarne AMedlem sedan feb. 2001151 inlägg
#6

Hjälp... har ni lämmnat mej åt mitt öde:OO :o

Engine^Medlem sedan dec. 20003 887 inlägg
#7
<%
SQL = "SELECT * FROM soff WHERE id = " & idnummer & ""
set Rs = connect.execute(SQL)
if not RS.eof then
Dim nurubrik
nurubrik = Rs("rubrik")
Dim nuingress
nuingress = Rs("ingress")
Dim nutext2
nutext2 = Rs("text2")
RS.MoveNext [blue]'Onödigt eftersom du i nästa ögonblick öppnar ett nytt Rs (Du hamnar även på EOF)[/blue]
set Rs = connect.execute(SQL) [blue]'Här måste du byta id om du vill ha en annan post[/blue]
Dim senid
senid = Rs("id")
Dim senrubrik
senrubrik = Rs("rubrik")
Dim seningress
seningress = Rs("ingress")
Dim sentext2
sentext2 = Rs("text2")
End if
Bjarne AMedlem sedan feb. 2001151 inlägg
#8

Men hur kan man byta id till nästa post som är under i databasen

'Här måste du byta id om du vill ha en annan post

solbulleMedlem sedan mars 20015 287 inlägg
#9

Du måste göra som LarsG skriver, då plockar du ju ut det id som har högre värde.
typ kanske:

<%
SQL = "SELECT * FROM soff WHERE id = " & idnummer
set Rs = connect.execute(SQL)
if not RS.eof then
Dim nurubrik
nurubrik = Rs("rubrik")
Dim nuingress
nuingress = Rs("ingress")
Dim nutext2
nutext2 = Rs("text2")
End if

sql = "select * FROM soff WHERE id > " & idnummer 
set rs2 = connect.execute(sql)
if not rs2.eof then
Dim senid
senid = Rs2("id")
Dim senrubrik
senrubrik = Rs2("rubrik")
Dim seningress
seningress = Rs2("ingress")
Dim sentext2
sentext2 = Rs2("text2")
End if

SQL2 = "UPDATE soff SET rubrik = '" & nurubrik & "', ingress = '" & nuingress & "', text2 = '" & nutext2 & "' WHERE ID = " & senid
SQL3 = "UPDATE soff SET rubrik = '" & senrubrik & "', ingress = '" & seningress & "', text2 = '" & sentext2 & "' WHERE ID = " & idnummer
connect.Execute(SQL2)
connect.Execute(SQL3)
%>

Fast jag är ju fortfarande osäker på om du inte går över ån efter vatten... Du har alltså kanske 10 id från nummer 1-10 och vill byta plats/innehåll på tex 4 samt 5?

Bjarne AMedlem sedan feb. 2001151 inlägg
#10

OK det fungerade ju som det skulle.
Så som jag fattar det så talar man inte om att man skall använda nästa post utan nästa post hämtas automatiskt andra gånen eller hur funkar det?

Vad menar du med att man går över ån efter vatten? kan man göra det enklare :l :D

solbulleMedlem sedan mars 20015 287 inlägg
#11

Du talar visst om vilken post.
I den första frågan hämtar du: id = idnummer
Nästa gång tar du: id > idnummer

Ser du skillnaden?

Jag ska inte opponera mig mot ditt uppägg erftersom jag inte har en susning om vad du skapar för något, det jag funderade på var om du ändrar ordningen i db bara för att skriva ut din data annorlunda. I så fall skulle man kunna lösa det vid själva utskrivningen i stället.
Men som sagt, jag vet inte dina syften.

Bjarne AMedlem sedan feb. 2001151 inlägg
#12

Ja nu ser jag. Tänkte inte inte i dom banorna. Låste mej vid att jag inte har en rak nummerföljd i id posterna då man kan radera i mellan och funkar det inte med att numeriskt flytta med typ id = idnummer + 1 men nästa större funkar ju Tack!

Sidor skapas med ett formulär som skickas till databasen där "rubrik" blir en klickbar länk i en meny. Man skall sedan kunna flytta dom i menyn som hämtas uppifrån och mer i databasen.

Det går säkert att bestämma vilken ordning som dom skall hämtas vid utskriften men jag vet inte hur

Tack för hjälpen

emissionMedlem sedan dec. 19996 721 inlägg
#13

Eller ännu hellre bara en fråga...

<%
SQL = "SELECT * FROM soff WHERE id >= " & idnummer & " ORDER BY id"
set Rs = connect.execute(SQL)
if not RS.eof then
Dim nurubrik
nurubrik = Rs("rubrik")
Dim nuingress
nuingress = Rs("ingress")
Dim nutext2
nutext2 = Rs("text2")
Rs.Movenext
if not rs.eof then
Dim senid
senid = Rs("id")
Dim senrubrik
senrubrik = Rs("rubrik")
Dim seningress
seningress = Rs("ingress")
Dim sentext2
sentext2 = Rs("text2")
SQL2 = "UPDATE soff SET rubrik = '" & nurubrik & "', ingress = '" & nuingress & "', text2 = '" & nutext2 & "' WHERE ID = " & senid
SQL3 = "UPDATE soff SET rubrik = '" & senrubrik & "', ingress = '" & seningress & "', text2 = '" & sentext2 & "' WHERE ID = " & idnummer
connect.Execute(SQL2)
connect.Execute(SQL3)
End if

End if

%>
Engine^Medlem sedan dec. 20003 887 inlägg
#14

Det kan vara av intresse att endast välja ut dom två poster man jagar också...

SQL = "SELECT TOP 2 * FROM soff WHERE id >= " & idnummer & " ORDER BY id"
GlitterMedlem sedan juli 2003465 inlägg
#15

om du inte har identity på id eller om du inte kan sortera på något annat sätt så kan du göra på det jobbiga sättet:

SQL = "SELECT * FROM sof"
set Rs = connect.execute(SQL)

do
if rs("id") = idnummer then

Dim nurubrik
nurubrik = Rs("rubrik")
Dim nuingress
nuingress = Rs("ingress")
Dim nutext2
nutext2 = Rs("text2")
Rs.Movenext
if not rs.eof then
Dim senid
senid = Rs("id")
Dim senrubrik
senrubrik = Rs("rubrik")
Dim seningress
seningress = Rs("ingress")
Dim sentext2
sentext2 = Rs("text2")
SQL2 = "UPDATE soff SET rubrik = '" & nurubrik & "', ingress = '" & nuingress & "', text2 = '" & nutext2 & "' WHERE ID = " & senid
SQL3 = "UPDATE soff SET rubrik = '" & senrubrik & "', ingress = '" & seningress & "', text2 = '" & sentext2 & "' WHERE ID = " & idnummer
connect.Execute(SQL2)
connect.Execute(SQL3)

end if
rs.movenext
loop until rs.eof
140 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
137 ms — hämta tråd, inlägg och bilagor (db)