Avatar billede discowarp9 Nybegynder
24. maj 2004 - 23:21 Der er 7 kommentarer og
1 løsning

Databaseudtræk i en løkke.

Hejsa.
Jeg har på min side en løkke der gennemløber et recordset. For hver post i recordset'et laver den et nyt databaseudtræk, baseret på det første sæt's id. Problemet er at i stedet for at lave et nyt udtræk hver gang, gentager den sig selv når der ikke er nogen poster der opfylder where clausen.
Koden ser således ud:

  Do
    strSQL = "Select * From warreports where warid = " & rs("id") & ";"
    Set ps = Conn.Execute(strSQL)

    If Not ps.EOF Then
      ccblinearr = split(ps("lineup"), ",")
      opplinearr = split(ps("opplineup"), ",")
      ccbline = ""
      oppline = ""
      For i = LBound(ccblinearr) to UBound(ccblinearr)
    ccbline = ccbline & ccblinearr(i) & "<br />"
      Next
      For i = LBound(opplinearr) to UBound(opplinearr)
    oppline = oppline & opplinearr(i) & "<br />"
      Next
      warrep =    "<div class=""warrep"" id=""warrep" & rs("id") & "fill"" style=""display:none;width:100%;""></div>" & _
        "<div id=""warrep" & rs("id") & """ style=""display:none;width:100%;""><table class=""tblwarrep"">" & _
        "<tr>" & _
        "  <td colspan=""4""><span class=""warrephead"">" & rs("opponent") & "</span></td>" & _
        "</tr>" & _
        "<tr>" & _
        "  <td>Date:</td><td>" & rs("spacedate") & "</td>" &_
        "  <td>Result:<td><td class=""" & rs("outcome") & """>" & rs("score") & "</td>" & _
        "</tr>" & _
        "<tr>" & _
        "  <td>Lineup:</td><td>" & ccbline & "</td>" & _
        "  <td>" & rs("opponent") & " Lineup:</td><td>" & oppline & "</td>" & _
        "</tr>" & _
        "<tr>" & _
        "  <td colspan=""4"">" & ps("comment") & "</td>" & _
        "</tr>" & _
        "</table></div>"
    End If

    Response.Write    "<tr>" & _
            "  <td>" & rs("spacedate") & "</td>" & _
            "  <td>" & rs("opponent") & "</td>" & _
            "  <td>" & rs("wartype") & "</td>" & _
            "  <td>" & rs("maps") & "</td>" & _
            "  <td>" & rs("mapscore") & "</td>" & _
            "  <td class=""" & rs("outcome") & """>" & rs("score") & "</td>" & _
            "  <td></td>" & _
            "</tr>" & _
            "<tr>" & _
            "  <td colspan=""7"">" & warrep & "</td>" & _
            "</tr>"
    rs.MoveNext
  Loop While Not rs.EOF

Nogen der kan spotte fejlen? Jeg har set mig blind på det. Håber i kan løse det.
Venlig hilsen
Peter.
Avatar billede ellebaek Nybegynder
24. maj 2004 - 23:25 #1
prøv med:
set ps = nothing

efter rs.movenext
Avatar billede discowarp9 Nybegynder
24. maj 2004 - 23:29 #2
Desværre. Det har jeg prøvet. Jeg forstår det faktisk ikke, for det må betyde at enten sletter den ikke recordset'et, eller også virke sql-sætningen ikke som den skal.
Tager jeg fejl?
Avatar billede ellebaek Nybegynder
24. maj 2004 - 23:30 #3
det er nok rigtigt..
Prøv i stedet så at sætte den her linie:

newid = rs("id")
ind før sql'en, og så sæt newid i sqlen i stedet for rs("id")
Avatar billede discowarp9 Nybegynder
24. maj 2004 - 23:34 #4
Nej, desværre. Det virkede heller ikke. Men på den anden side ændrede det jo såden set heller ikke noget.
Avatar billede ellebaek Nybegynder
25. maj 2004 - 00:03 #5
men det var kun hvis der ikke var nogen elementer der skulle matche forespørgslen der var et problem..

prøv at remme alle de andre linier ud..
og så kun skrive sql'en ud med:
<%
Do
    strSQL = "Select * From warreports where warid = " & rs("id") & ";"
    response.write strsql & "<br>"

    rs.MoveNext
  Loop While Not rs.EOF
%>

prøv det her..
og så vis hvad det skriver.
Avatar billede discowarp9 Nybegynder
25. maj 2004 - 00:11 #6
Jeg får det her svar:
Select * From warreports where warid = 15;Select * From warreports where warid = 14;Select * From warreports where warid = 13;Select * From warreports where warid = 12;Select * From warreports where warid = 10;Select * From warreports where warid = 9;Select * From warreports where warid = 8;Select * From warreports where warid = 7;Select * From warreports where warid = 6;Select * From warreports where warid = 5;Select * From warreports where warid = 4;Select * From warreports where warid = 3;Select * From warreports where warid = 2;Select * From warreports where warid = 1;

Fuldstændig efter planen. Tricket er bare at det er kun poster hvor warid er lig 13 og 14. Så resten burde være tomme. Bemærk at den rent faktisk undlader at skrive noget ved 15, det er først når den har hentet noget en gang at det går galt.
Avatar billede discowarp9 Nybegynder
25. maj 2004 - 00:33 #7
Problemet er løst!
Fejlen var at jeg glemte at nulstille variablen warrep således at den ikke blev overskrevet med "" men blot udskrev hvad der hele tiden havde været i den.
ellebaek > Hvis du smider et svar får du pointene som tak for hjælpen.
Med venlig hilsen
Peter
Avatar billede ellebaek Nybegynder
25. maj 2004 - 10:58 #8
Jeg smider et svar ;-)
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