04. juni 2005 - 23:45Der er
12 kommentarer og 1 løsning
Hvordan laver jeg loop inde i loop?
Jeg har lavet nedstående og vil gerne flette loop'sne sammen. Alle steder I BestilTabel hvor KundeTabel.IDkunde = BestilTabel.KundeID. Listes følgende FFtabel.BilledeID, SortID, NavnID hvor BestilTabel.PlanteID = FFtabel.ID. Sammen med listes også BestilTabel.AntalID, IDpris, UdregnID. Indtil der ikke er flere hvor KundeTabel.IDkunde = BestilTabel.KundeID.
Her er hvor jeg er kommet til og kan ikke længere overskue det, er der mon en anden der kan?
strSQL = "Select * From KundeTabel where LoginID = '" & Session("navn") & "'" Set rs = Conn.Execute(strSQL) If rs.eof Then
Response.Write "Bruger findes ikke" Else
strNav = "" & rs("IDkunde") & ""
'Response.Write strNav End If strSQL1 = "Select * From BestilTabel where KundeID = " & strNav & "" Set rs = Conn.Execute(strSQL1) Do
strPlan = "" & rs("PlanteID") & ""
'Response.Write strPlan
strAntal = "" & rs("AntalID") & ""
'Response.Write strAntal
strUdr = "" & rs("UdregnID") & ""
'Response.Write strUdr strSQL2 = "Select * From FFtabel where ID = " & strPlan & "" Set rs = Conn.Execute(strSQL2)
Du skal nok bruge to forskellige resultsets, en til det ydre loop (BestilTabel) og en til det indre loop (FFTabel). Hvis det stadig ikke fungerer, kan du forsøge med en forbindelse mere som du udfører det indre loop på (jeg er nemlig ikke sikker på om du kan have to forspørgsler kørende på den samme forbindelse).
Det skulle give noget kode i stil med dette:
'TODO: Opret en ny connection her som du kalder ConnFF ' Den skal benyttes til at lave opslag i den FFTabel
strSQL = "Select * From KundeTabel where LoginID = '" & Session("navn") & "'" Set rs = Conn.Execute(strSQL) If rs.eof Then Response.Write "Bruger findes ikke" Else strNav = "" & rs("IDkunde") & "" End If
strSQL1 = "Select * From BestilTabel where KundeID = " & strNav & "" Set rs = Conn.Execute(strSQL1) While Not rs.EOF strPlan = "" & rs("PlanteID") & "" strAntal = "" & rs("AntalID") & "" strUdr = "" & rs("UdregnID") & ""
strSQL2 = "Select * From FFtabel where ID = " & strPlan & "" Set rsFF = ConnFF.Execute(strSQL2)
While Not rsFF.EOF strPlant = "<br>" & rsFF("NavnID") & strAntal & strUdr Response.Write strPlant rsFF.moveNext Loop
Microsoft VBScript compilation error '800a0408' Invalid character /bestil/kurv2.asp, line 36 Ê Ê Response.Write "Bruger findes ikke" ^ Og brugeren er logget ind.
CRAP! Sorry, der skal vist nok "Do" foran "While", når man slutter med "Loop". Alternativt skal "Loop" udskiftes med "Wend" (den gamle måde at loope med "While" i VB)...
' Den skal benyttes til at lave opslag i den FFTabel strSQL = "Select * From KundeTabel where LoginID = '" & Session("navn") & "'" Set rs = Conn.Execute(strSQL)
If rs.eof Then Response.Write "Bruger findes ikke" Else strNav = "" & rs("IDkunde") & "" End If strSQL1 = "Select * From BestilTabel where KundeID = " & strNav & "" Set rs = Conn.Execute(strSQL1)
Dette burde fungere (jeg har flyttet Do ned på samme linie som While for begge while-sætninger). Husk i øvrigt at lukke begge connections efter endt visning (lige nu lukker du kun Conn, men mangler at lukke ConnFF). Du kan godt bruge samme DSN-streng til at åbne begge connections med, da det er den samme streng for begge...
' Databaseforbindelse2 Set ConnFF = Server.CreateObject("ADODB.Connection") ConnFF.Open DSN
' Den skal benyttes til at lave opslag i den FFTabel strSQL = "Select * From KundeTabel where LoginID = '" & Session("navn") & "'" Set rs = Conn.Execute(strSQL)
If rs.eof Then Response.Write "Bruger findes ikke" Else strNav = "" & rs("IDkunde") & "" End If strSQL1 = "Select * From BestilTabel where KundeID = " & strNav & "" Set rs = Conn.Execute(strSQL1)
Do While Not rs.EOF strPlan = "" & rs("PlanteID") & "" strAntal = "" & rs("AntalID") & "" strUdr = "" & rs("UdregnID") & ""
strSQL2 = "Select * From FFtabel where ID = " & strPlan & "" Set rsFF = ConnFF.Execute(strSQL2)
Do While Not rsFF.EOF strPlant = "<br>" & rsFF("NavnID") & strAntal & strUdr Response.Write strPlant rsFF.moveNext Loop
rs.MoveNext Loop
Conn.Close ConnFF.Close Set Conn = Nothing Set ConnFF = Nothing %>
Nu kommer følgend fejl: ADODB.Recordset error '800a0cc1' Item cannot be found in the collection corresponding to the requested name or ordinal. /bestil/kurv2.asp, line 45
For mig var det løsningen på en halv dags arbejde.
Mvh fauer
Synes godt om
Ny brugerNybegynder
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.