20. januar 2004 - 22:10Der er
7 kommentarer og 1 løsning
En DO og LOOP indeni en anden DO og LOOP
Jeg har et script som laver et antal loops efter hvor mange felter der er i en given tabel.
Men inde i dette loop skal jeg lave en loop på en anden tabel.
i mit test tilfælde laver det første loop 12 loops. Det andet loop laver 3 loops inden i det med 12 loops.
Det er ikke nemt at beskrive. ----kode------------ strSQL = "Select * from genre" Set rs = Conn.Execute(strSQL)
Do
filmSQL = "Select * From film WHERE Genre='" & rs("genreid") & "'" Set filmrs = Conn.Execute(filmSQL)
If NOT filmRS.EOF Then -- her vil jeg gerne have en DO havefilm = 0 if filmrs("indehaver") <> "" then arrindehaver = Split(filmrs("indehaver"),",") For t = LBound(arrindehaver) to UBound(arrindehaver) if arrindehaver(t) = cstr(session("userid")) then havefilm = 1 response.write "film fundet" 'response.end end if Next End if --- her skal der så være en movenext og loopwhile not.eof End if
rs.MoveNext Loop While Not rs.EOF ----kode slut-----
Hvis jeg prøver at sætte den DO/LOOP funktion ind, så siger den at jeg ikke kan lave et LOOP uden at have en DO.
Mange Point for hurtigt svar (indenfor 30 min). På forhånd TAK.
I lang tid har samarbejdsbranchen fokuseret på at forbedre enhedsfunktioner – bedre kameraer, klarere lyd og smartere software. Men den virkelige forvandling handler ikke om funktioner.
filmSQL = "Select * From film WHERE Genre='" & rs("genreid") & "'" Set filmrs = Conn.Execute(filmSQL)
If NOT filmRS.EOF Then do while not filmrs.EOF havefilm = 0 if filmrs("indehaver") <> "" then arrindehaver = Split(filmrs("indehaver"),",") For t = LBound(arrindehaver) to UBound(arrindehaver) if arrindehaver(t) = cstr(session("userid")) then havefilm = 1 response.write "film fundet" 'response.end end if Next End if filmrs.Movenext loop
End if
rs.MoveNext Loop While Not rs.EOF ----kode slut-----
Det faktisk ikke nødvendigt med denne if sætning If NOT filmRS.EOF Then da det tjek ligger bygget ind i do while not ... så koden kan laves sådan her uden if sætningen, men der sker ikke noget ved at bevare den:
----kode------------ strSQL = "Select * from genre" Set rs = Conn.Execute(strSQL)
Do
filmSQL = "Select * From film WHERE Genre='" & rs("genreid") & "'" Set filmrs = Conn.Execute(filmSQL)
do while not filmrs.EOF havefilm = 0 if filmrs("indehaver") <> "" then arrindehaver = Split(filmrs("indehaver"),",") For t = LBound(arrindehaver) to UBound(arrindehaver) if arrindehaver(t) = cstr(session("userid")) then havefilm = 1 response.write "film fundet" 'response.end end if Next End if filmrs.Movenext loop
rs.MoveNext Loop While Not rs.EOF ----kode slut-----
Det er ikke et krav at bruge Cstr. Det som typisk er et problem er et den ene del af if sætningen arrindehaver(t) tolks som en variable af typen tekst og den anden del session("userid") tolkes som types tal. Så vil 2 og "2" ikke være lig hinanden så derfor bruger man at konvertere enten teksten til tal med Cint eller tallet til tekst med Cstr.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.