Avatar billede simsen Mester
12. februar 2005 - 20:33 Der er 10 kommentarer og
1 løsning

loop der ikke virker

Det jeg vil have ud af følgende kode, er at den skal loope igennem de 31 felter (jeg ved der er) og udskrive det der står i de enkelte felter. Mit loop virker bare ikke som det skal. Jeg får godt nok skrevet det første felt ud (altså felt 01) - men de efterfølgende kommer bare ikke - hvad er galt?

<%
OpenCon
call ChooseTableWhere ("Kalender", "ID", smaaned)
    if smaaned = 1 then
        mdr = "Januar"
    end if
    if smaaned = 2 then
        mdr = "Februar"
    end if
    if smaaned = 3 then
        mdr = "Marts"
    end if
    if smaaned = 4 then
        mdr = "April"
    end if
    if smaaned = 5 then
        mdr = "Maj"
    end if
    if smaaned = 6 then
        mdr = "Juni"
    end if
    if smaaned = 7 then
        mdr = "Juli"
    end if
    if smaaned = 8 then
        mdr = "August"
    end if
    if smaaned = 9 then
        mdr = "September"
    end if
    if smaaned = 10 then
        mdr = "Oktober"
    end if
    if smaaned = 11 then
        mdr = "November"
    end if
    if smaaned = 12 then
        mdr = "December"
    end if
    response.write rs.fields(2)
        response.write "<table align=""center"" width=""50%"" border=3><tr><td colspan=""2"" align=""center""><b>"
        response.write mdr   
        response.write "</b></td></tr>"
    i = 1

    do while not rs.eof

        response.write "<tr><td width=""15%"">"
        response.write i
        response.write ".&nbsp;"
        response.write mdr
        response.write "</td><td width=""35%"">"
        response.write rs.Fields(i)
        response.write "</td></tr>"
            i = i + 1
    rs.MoveNext
    loop
        response.write i
       
        response.write "</table>"
%>
Avatar billede softspot Forsker
12. februar 2005 - 20:45 #1
Prøv evt. at vise koden for ChooseTableWhere...
Avatar billede simsen Mester
12. februar 2005 - 20:54 #2
softspot

Det kan jeg da godt - men bestemt ikke den, det er galt med - for laver jeg en response.write rs.fields(02) eller for den sags skyld rs.fields(27) istedet for - får jeg det korrekt ud *SS*

'Vælger tabel med Where og Like
Sub ChooseTableWhere(sTable,sWhere,sLike)
set rs=Server.CreateObject("ADODB.recordset")
sqlstmt = "SELECT * FROM " & stable & " Where " & sWhere & " Like '" & sLike & "'"
rs.open sqlstmt, connectme, adOpenStatic, adLockOptimistic
End Sub
Avatar billede softspot Forsker
12. februar 2005 - 21:12 #3
Næh, det har du da ret i. Når jeg læser dit spm. igen kan jeg godt se det.

Så det må være fordi du ikke itererer igennem fields-collection, men kun igennem row-collection. Du skal lave et loop inde i det loop du allerede har lavet. Noget i stil med dette:

do while not rs.eof
  for i = 1 to rs.fields.count
    response.write "<tr><td width=""15%"">"
    response.write i
    response.write ".&nbsp;"
    response.write mdr
    response.write "</td><td width=""35%"">"
    response.write rs.Fields(i)
    response.write "</td></tr>"
  next
  rs.MoveNext
loop
Avatar billede simsen Mester
12. februar 2005 - 21:46 #4
Hejsa softspot

Det er den rette vej - men lige nu, får jeg desværre kun hver anden felt ud og ikke alle felter - hvad er galt? *SS*
Avatar billede softspot Forsker
12. februar 2005 - 22:11 #5
Har du fjernet i = i + 1 fra loopet?
Avatar billede simsen Mester
12. februar 2005 - 23:14 #6
Det havde jeg ikke *flov*

Takker for hjælpen *SS*
Avatar billede softspot Forsker
12. februar 2005 - 23:49 #7
det var så lidt :)
Avatar billede simsen Mester
12. februar 2005 - 23:54 #8
Hejsa softspot

Jeg var lidt for hurtig - den kommer med en fejl ved et felt der ikke findes:

32. Januar ADODB.Recordset fejl '800a0cc1'

Item cannot be found in the collection corresponding to the requested name or ordinal.

/banko/Banko/spilleplaner.asp, line 104

Nu findes der ikke nogen 32 i databasen - den går kun til 31???
Avatar billede simsen Mester
12. februar 2005 - 23:57 #9
Ligegyldigt jeg ændrede:

for i = 1 to rs.fields.count
til
for i = 1 31
Avatar billede kjulius Novice
13. februar 2005 - 03:00 #10
Fields collection bliver nummereret fra 0, mens Count variablen indeholder antallet af felter (hvilket vil sige, at den tæller fra 1), hvilket kan være lidt forvirrende.

Du bør derfor angive for-next loopet som

for i = 0 to rs.fields.count - 1
Avatar billede softspot Forsker
14. februar 2005 - 16:16 #11
Enig med kjulius! :)
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