webForumDet fria alternativet

Varför går inte detta

ASP

10 svar · 196 visningar · startad av Jacob

Medlem sedan dec. 2000503 inlägg
Frågan#1

fdid=rei("receptid")
do until rei("receptid")=fdid
rei.movenext
loop

det blit undantags fel, why?!?

------------------
ja©ob

Medlem sedan mars 20007 896 inlägg
#2

Hmm, vad försöker du göra eg.? Loopen kommer ju aldrig att köras, eftersom att fdid är rei("receotid"), då du sätter det värdet på raden innan.

Och istället för en Until-loop borde en While-loop passa bättre;

Do While Not rei("receptid") = fdid
...

------------------
SPiN, bjorne.w@telia.com

-- Den som går i andras fotspår kommer aldrig först --

Medlem sedan dec. 200012 464 inlägg
#3

Vad har receptid för datatyp?

Om det är PM/Memo så går det inte att använda den hur som helst.

------------------
essentitia preter non sans multiplicandum

Medlem sedan dec. 2000503 inlägg
#4

ok jag ska förklara lite mera.
Det är lite mera kod egentilgen:

<%
rei = "SELECT * FROM rei" 
SET rei=connect.execute(rei,,adCmdText)
do until rei.eof
recept = "SELECT receptid FROM rei where receptid="&rei("receptid")&sok
SET recept=connect.execute(recept,,adCmdText)
If Not recept.eof then response.write (recept("receptid")&"<br>")
fdid=rei("receptid")
do until not rei("receptid")=fdid
rei.movenext
loop
loop
connect.close
%>

Det jag vill göra är att köra movenext på rei ända tills receptid inte är samma som innan.

[Redigerat av Jacob den 09 okt 2001]

Medlem sedan dec. 2000503 inlägg
#5

larsG receptid är av typen tal

------------------
ja©ob

Medlem sedan dec. 200012 464 inlägg
#6

Jag förstår inget alls av din kod.

Varför har du den inre select-satsen? Kan du beskriva vilken sökning du vill göra.

------------------
essentitia preter non sans multiplicandum

Medlem sedan dec. 2000503 inlägg
#7

det ända jag vill göra är att köra movenext ända tills det nya recsetet inte är samma som innan.

------------------
ja©ob

Medlem sedan dec. 200012 464 inlägg
#8

Jag lade till några kontroller

<%
rei = "SELECT * FROM rei" 
SET rei=connect.execute(rei,,adCmdText)
do until rei.eof
recept = "SELECT receptid FROM rei where receptid="&rei("receptid")&sok
SET recept=connect.execute(recept,,adCmdText)
If Not recept.eof then response.write (recept("receptid")&"<br>")
recept.close
fdid=rei("receptid")
do until rei.eof or rei("receptid") <> fdid
rei.movenext
loop
if rei.eof then exit do
loop
connect.close
%>

Det går förmodligen att skriva koden enklare men, som sagt ...

------------------
essentitia preter non sans multiplicandum

Medlem sedan dec. 2000503 inlägg
#9

jag får fortfarande undantagsfel, sorry

------------------
ja©ob

Medlem sedan dec. 2000503 inlägg
#10

Har lös det:

fdid=rei("receptid")
do until rei.eof
if rei("receptid")=fdid then
rei.movenext
Else
exit do
end if
loop

Men jag fattar inte varför det inte gick på det andra sättet.

Tack LarsG

------------------
ja©ob

Medlem sedan dec. 200012 464 inlägg
#11

Okej, du sa att det var tal så vi får väl lägga till lite konverteringar då.

<%
rei = "SELECT * FROM rei" 
SET rei=connect.execute(rei,,adCmdText)
do until rei.eof
recept = "SELECT receptid FROM rei where receptid="&rei("receptid")&sok
SET recept=connect.execute(recept,,adCmdText)
If Not recept.eof then response.write (recept("receptid")&"<br>")
recept.close
fdid= clng(rei("receptid"))
do until rei.eof 
if clng(rei("receptid")) <> fdid then exit do
loop
if rei.eof then exit do
loop
connect.close
%>

Jag ändrade lite i den inre do-loopen också.

------------------
essentitia preter non sans multiplicandum

264 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)