Avatar billede ldplusse Nybegynder
20. januar 2004 - 22:10 Der 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.
Avatar billede eagleeye Praktikant
20. januar 2004 - 22:13 #1
Prøv:

Do

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-----
Avatar billede eagleeye Praktikant
20. januar 2004 - 22:14 #2
nå nu fik jeg ikke de 2-3 første linjer med  ;)
Avatar billede ldplusse Nybegynder
20. januar 2004 - 22:26 #3
HELT PERFEKT, Tak til eagleeye (igen)
Men kom lige med et svar, så er der 200 point hjemme.
Avatar billede eagleeye Praktikant
20. januar 2004 - 22:28 #4
Ok ;))

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-----
Avatar billede ldplusse Nybegynder
20. januar 2004 - 22:32 #5
Tak for den ekstra info.
Det er meget godt at lave tingene rigtigt og så simpelt som muligt, så jeg fjernet min if not sætning.
Avatar billede ldplusse Nybegynder
20. januar 2004 - 22:34 #6
En anden ting, jeg er nysgerig over hvorfor at man inden i en Do eller For løkke skal bruge "cstr" for at kunne læse sessions,variabler og mere.

Men jeg forstå ikke helt hvor og hvornår det er nødvendigt, så hvis det kan forklares kort, så ville jeg være glad.
Avatar billede eagleeye Praktikant
20. januar 2004 - 22:37 #7
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.

if arrindehaver(t) = cstr(session("userid")) then
Avatar billede ldplusse Nybegynder
20. januar 2004 - 22:41 #8
OK tak for det.
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester