Avatar billede george Nybegynder
05. maj 2006 - 22:53 Der er 60 kommentarer og
1 løsning

Hjælp med array

Haster lidt...

Jeg har denne kode som jeg ikke kan få til at virke :
        do while not rs.eof 'Looping rows
            iString = rs("Date")
            If iString <> "" Then
                i = i + 1
                Antal = CInt(i)
                ReDim Dato(i)
                Dato(Antal) = rs(Antal)
                Response.Write "<td width=42 Class=RammeKolonnerHTB><img src=images/sp.gif width=42 height=1><br>" & iString & "</td>"
            End If
            rs.MoveNext
        Loop

Og dette output :
Antal=4
Dato1
Dato2
Dato3
Dato4 13.12

Hvorfår er der ingen datoer ud for dato1, dato2 og dato3 ?

Jeg ved der er datoer i db'en
Avatar billede eagleeye Praktikant
05. maj 2006 - 23:02 #1
Det er nok i denne linie fejlen kommer:

ReDim Dato(i)


Prøv at tilføje Preserve så skulle den ikke overskrive de værdie som findes i arrayet i forvejen:

ReDim Preserve Dato(i)
Avatar billede erikjacobsen Ekspert
05. maj 2006 - 23:03 #2
Den ser ikke helt rigtig ud, den her
              Dato(Antal) = rs(Antal)
Hvorfor tager du først felt 1, så felt 2, så 3, osv. i dit recordsæt? Du skal vel altid aflæse det samme felt, men i forskellige rækker. Det med rækker tager rs.MoveNext sig jo af.
Avatar billede george Nybegynder
05. maj 2006 - 23:12 #3
eagleeye >> jeg har prøvet med preserve, men det virker ikke.
Avatar billede george Nybegynder
05. maj 2006 - 23:13 #4
Erik >> tænker over det du skriver...
Avatar billede george Nybegynder
05. maj 2006 - 23:35 #5
Jeg henter datoer fra en kolonne i db'en, men vil have dem skrevet på en linje.

Sådan her:
        20.07|10.08|06.10|13.12|Dato|Dato|Dato|Dato|Dato|Dato
Navn 1    X
Navn 2                X
Navn 3
Navn 4          X
o.s.v

Det virker fint, men jeg ønsker at "notere" placeringen af krydset, f.eks at 20.07 har plads 1, 06.10 har plads 3, men samtidig også have Navnet på personen. Jeg troede bare man kunne putte begge ting ind i et array og så skrive det ud senere. Kan man ikke det ?
Avatar billede george Nybegynder
05. maj 2006 - 23:37 #6
Håber i forstår meningen selv om det har rykket sig lidt.
Avatar billede erikjacobsen Ekspert
05. maj 2006 - 23:38 #7
Ja, i princippet kan man gøre alt, Men jeg (vi?) kan ikke gennemskue hvad du er ude på ud fra din forklaring. Hvad står der fx i din tabel/tabeller? Hvad er din sql-sætning? Hvad skal du have ud?
Avatar billede eagleeye Praktikant
05. maj 2006 - 23:40 #8
Jeg kan nu heller ikke helt gennemskue det :)
Er datoen kolonnenavnet eller ?
Avatar billede eagleeye Praktikant
05. maj 2006 - 23:42 #9
Hvor kommer navnet fra?
Avatar billede george Nybegynder
05. maj 2006 - 23:55 #10
Denne kode:
        '  /////////////////        Dato sektion        /////////////////
       
        'Create object for the recordset
        Set rs = Server.CreateObject("ADODB.RecordSet")

        'Create DSN connection
        strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("log/vl10.mdb")

        ' Opbygning af SQL streng
        'strSQL = "SELECT * FROM Vaertskaber Where Aar =" & "'" & iAar & "'"
        strSQL = "SELECT * FROM Vaertskaber Where Aar = '" & iAar & "' ORDER BY RIGHT([date],2)"
        'Response.Write(strSQL)
           
        'Open DB
        rs.Open strSQL, strDSN, 1
       
        %>

        <table cellspacing="0" cellpadding="0" border="0" width="600">
        <tr>
        <td width="180" height="18" Class="RammeKolonnerVHTB" valign="top"><img src="images/sp.gif" width="180" height="1"><br>&nbsp;&nbsp;</td>
        <%
       
        i = 0
        j = 0
        do while not rs.eof 'Looping rows
            iString = rs("Date")
            If iString <> "" Then
                i = i + 1
                Antal = CInt(i)
                ReDim Dato(Antal)
                Dato(Antal) = rs(Antal)
                Response.Write "<td width=42 Class=RammeKolonnerHTB><img src=images/sp.gif width=42 height=1><br>" & iString & "</td>"
            End If
            rs.MoveNext
        Loop

        j = 9
        For k = i to j
            Response.Write "<td width=42 Class=RammeKolonnerHTB><img src=images/sp.gif width=42 height=1><br>Dato</td>"
        Next
       
        Response.Write "Antal=" & Antal & "<br>"
       
        For i = 1 to Antal
            Response.Write "Dato" & i & " " & Dato(i) & "<br>"
        Next
       
        rs.close()
        Set rs = Nothing

Laver dette output:
20.07|10.08|06.10|13.12|Dato|Dato|Dato|Dato|Dato|Dato

Denne kode:
        <!--  /////////////////        Navneliste sektion        ///////////////// -->       
<%
        'Create object for the recordset
        Set rs = Server.CreateObject("ADODB.RecordSet")

        'Create DSN connection
        strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("log/vl10.mdb")

        ' Opbygning af SQL streng
        strSQL = "SELECT * FROM Vaertskaber Where Aar =" & "'" & iAar & "'"
        'Response.Write(strSQL)
       
        'Open DB
        rs.Open strSQL, strDSN, 1

        'Get the data from the DB into an array, for performance.
        if NOT rs.EOF then
            rsarr = rs.GetRows()
            max = Ubound(rsarr,2)
        else
            max = 0
        end if
       
%>

        <table cellspacing="0" cellpadding="0" border="0" width="600">

<%

        row=0
        do while(row<=max) 'Looping rows
        Response.Write "<tr>"
        Response.Write "<td width=180 height=18 Class=RammeKolonnerVHB><img src=images/sp.gif width=180 height=1><br>" & rsarr(2,row) & " " & rsarr(3,row) & "</td>"
            If rsarr(4,row) <> "" Then
                For i = 1 to 10
                    Response.Write "<td width=42 Class=RammeKolonnerHB><img src=images/sp.gif width=42 height=1><br>" & "X" & "</td>"
                Next
            Else
                    Response.Write "<td width=42 Class=RammeKolonnerHB><img src=images/sp.gif width=42 height=1><br>" & "Y" & "</td>"
            End If
            row = row + 1
            Response.Write "</tr>"
        Loop

        rs.close()
        Set rs = Nothing

Laver dette output:
Navn1 og sætter et kryds ud for den dato personen har afholdt et møde f.eks.
Navn2 denne person har ikke afholdt noget møde så der er alle felter tomme
Navn3 Sætter igen kryds ud for den dato personen har afholdt et møde og tomme felter hvis han ikke har haft afholdt et møde.
o.s.v.

Det er det jeg prøver at skildre længere oppe med krydserne.

db'en indeholder bare fornavn, efternavn og et tekstfelt der indeholder en dato ( 20.07 )

Det jeg skal have ud er en person og et kryds ud for den viste dato, hvis personen har afholdt et møde. Hvis han ikke har afholdt et møde er der bare blanke felter over hele rækken.

Du må sige til hvis jeg skal prøve at forklare det anderledes.
Avatar billede george Nybegynder
06. maj 2006 - 00:00 #11
I løkken For i = 10 i nederste del af koden skulle jeg gerne kunne vælge om der skal sættes et kryds eller om der bare skal lave et blankt felt. Lige nu laver den bare 10 krydser.
Avatar billede erikjacobsen Ekspert
06. maj 2006 - 00:03 #12
Din tabel ser nu også ud til at indholde et felt med årstallet.

Kan man holde mere end et møde? Står man i tabellen hvis man ikke har holdt et møde?
Avatar billede george Nybegynder
06. maj 2006 - 00:04 #13
Bare man dog kunne sætte et billede ind så i kunne se hvordan resultatet så ud. ;-(
Avatar billede george Nybegynder
06. maj 2006 - 00:07 #14
Erik >> Ja det er rigtigt. Mente bare det vare irrelevant lige for dette problem.
Nej man kan kun holde et møde.
Ja man står i tabellen, men med tomme felter ( altså intet kryd ud for en dato )
Avatar billede george Nybegynder
06. maj 2006 - 00:08 #15
Jeg ligger lige et billede op på et website så i kan se hvad jeg mener. Øjeblik...
Avatar billede erikjacobsen Ekspert
06. maj 2006 - 00:11 #16
"Ja man står i tabellen, men med tomme felter ( altså intet kryd ud for en dato )" - der er vel ingen krydser i Vaertskaebertabellen. Spørgsmålet er om man står i Vaertskaebertabellen hvis man ikke har holdt møder?
Avatar billede eagleeye Praktikant
06. maj 2006 - 00:12 #17
Din for skal så vidt jeg kan se gå fra 0 til ubound på Dato()


                For i = 1 to 10
                    Response.Write "<td width=42 Class=RammeKolonnerHB><img src=images/sp.gif width=42 height=1><br>" & "X" & "</td>"
                Next




Sådan her i stil med dette og så kun udskrive X hvis Dato(i) 0 rsarr(4,x)


                For i = 0 to ubound(Dato)
                  if Dato(i) = rsarr(4,x) then
                    Response.Write "<td width=42 Class=RammeKolonnerHB><img src=images/sp.gif width=42 height=1><br>" & "X" & "</td>"
                  else
                    Response.Write "<td width=42 Class=RammeKolonnerHB></td>"
                  end if
                Next
Avatar billede eagleeye Praktikant
06. maj 2006 - 00:13 #18
x = row
Avatar billede erikjacobsen Ekspert
06. maj 2006 - 00:15 #19
Og det forudsætter lige at
          Dato(Antal) = rs(Antal)
ændres til
          Dato(Antal) = iString
og måske at løkken
                For i = 0 to ubound(Dato)
starter i 1
Avatar billede eagleeye Praktikant
06. maj 2006 - 00:15 #20
ok det var kun den ene del det er vist alle disse linie:


            If rsarr(4,row) <> "" Then
                For i = 1 to 10
                    Response.Write "<td width=42 Class=RammeKolonnerHB><img src=images/sp.gif width=42 height=1><br>" & "X" & "</td>"
                Next
            Else
                    Response.Write "<td width=42 Class=RammeKolonnerHB><img src=images/sp.gif width=42 height=1><br>" & "Y" & "</td>"
            End If



som skal rettes:



            For i = 0 to ubound(Dato)
              If Dato(i) = rsarr(4,row) Then
                    Response.Write "<td width=42 Class=RammeKolonnerHB><img src=images/sp.gif width=42 height=1><br>" & "X" & "</td>"
              Else
                    Response.Write "<td width=42 Class=RammeKolonnerHB><img src=images/sp.gif width=42 height=1><br>" & "Y" & "</td>"
              End If
            Next
Avatar billede george Nybegynder
06. maj 2006 - 00:18 #21
Her kan i se hvordan det er tænkt det skal se ud, selvfølgelig ikke med kryds i alle felter, men kun i et, hvis der er afholdt et møde hos den person.
http://www.bodygym.dk/test
Avatar billede george Nybegynder
06. maj 2006 - 00:27 #22
eagleeye >> er x = row placeret rigtigt ?

        row=0
        do while(row<=max) 'Looping rows
        Response.Write "<tr>"
        Response.Write "<td width=180 height=18 Class=RammeKolonnerVHB><img src=images/sp.gif width=180 height=1><br>" & rsarr(2,row) & " " & rsarr(3,row) & "</td>"

            ' eagleeye's kode indsat - start
            x = row
            For i = 0 to ubound(Dato)
              If Dato(i) = rsarr(4,row) Then
                    Response.Write "<td width=42 Class=RammeKolonnerHB><img src=images/sp.gif width=42 height=1><br>" & "X" & "</td>"
              Else
                    Response.Write "<td width=42 Class=RammeKolonnerHB><img src=images/sp.gif width=42 height=1><br>" & "Y" & "</td>"
              End If
            Next
            ' eagleeye's kode indsat - slut
           
            row = row + 1
            Response.Write "</tr>"
        Loop
Avatar billede eagleeye Praktikant
06. maj 2006 - 00:29 #23
det var en skrive fejl i første script (06/05-2006 00:12:31) jeg kom til at skrive x hvor der skulle stå row. Så den linie behøves ikke.
            x = row
Avatar billede george Nybegynder
06. maj 2006 - 00:29 #24
Erik >> her er din ændring sat ind. Skal dog lige ændre For i = 1 to ubound(Dato)

        i = 0
        j = 0
        do while not rs.eof 'Looping rows
            iString = rs("Date")
            If iString <> "" Then
                i = i + 1
                Antal = CInt(i)
                ReDim Dato(Antal)
               
                'Erik's ændring
                Dato(Antal) = iString               
               
                'Dato(Antal) = rs(Antal)
                Response.Write "<td width=42 Class=RammeKolonnerHTB><img src=images/sp.gif width=42 height=1><br>" & iString & "</td>"
            End If
            rs.MoveNext
        Loop
Avatar billede george Nybegynder
06. maj 2006 - 00:31 #25
eagleeye >> sletter lige x = row
Avatar billede erikjacobsen Ekspert
06. maj 2006 - 00:33 #26
Og husk også redim preserve
Avatar billede george Nybegynder
06. maj 2006 - 00:38 #27
Resultatet ser sådan ud : http://www.bodygym.dk/test

Med 0 eller 1 i For i = 0 to ubound(Dato)

Med preserve i redim for jeg denne fejl :
Microsoft VBScript runtime (0x800A000D)
Type mismatch
/vl10/Vaertskaber.asp, line 217

som er : ReDim preserve Dato(Antal)
Avatar billede erikjacobsen Ekspert
06. maj 2006 - 00:40 #28
Har vi ikke været det før??
  http://www.eksperten.dk/spm/706369  30/04-2006 22:48:50
Du er velkommen til at tage ved lære af tidligere erfaringer ;)
Avatar billede eagleeye Praktikant
06. maj 2006 - 00:42 #29
Skal den skrive "Dato" op til ti kolonner ??

20.07|10.08|06.10|13.12|Dato|Dato|Dato|Dato|Dato|Dato


Skal den ikke kun udksive de datoer som er i arrayet Dato?
Avatar billede george Nybegynder
06. maj 2006 - 00:46 #30
Jo, men der er åbenbart noget jeg ikke har forstået helt, da jeg ikke kan gennemskue det med array og stadig har problemer med at få vist det rigtigt. Tro mig, jeg ville ikke sidde og spørge om disse ting hvis jeg selv var en haj til det med array ;-)
Avatar billede george Nybegynder
06. maj 2006 - 00:47 #31
Den skal skrive "Dato" eller ingenting (læs tomme felter) hvis der ingen datoer er i db'en.
Avatar billede eagleeye Praktikant
06. maj 2006 - 00:48 #32
Så den skal altid udskrive 10 kolonner?
Avatar billede george Nybegynder
06. maj 2006 - 00:50 #33
Ja ligesom du selv har skrevet ovenfor. pt er der kun 4 datoer i db'en derfor kun 4 "rigtige" datoer og "dato" for resten.
Avatar billede erikjacobsen Ekspert
06. maj 2006 - 00:52 #34
Haj eller fladfisk - det går nok ... :)  Men du kan se på mit link til dit tidligere spørgsmål hvad du skal gøre, ikke?
Avatar billede eagleeye Praktikant
06. maj 2006 - 00:54 #35
ok men så skal kode i  06/05-2006 00:27:10  rettes så den også udskrive ti kolonner og ikke kun det antal som er i arrayet:



        do while(row<=max) 'Looping rows
        Response.Write "<tr>"
        Response.Write "<td width=180 height=18 Class=RammeKolonnerVHB><img src=images/sp.gif width=180 height=1><br>" & rsarr(2,row) & " " & rsarr(3,row) & "</td>"

            ' eagleeye's kode indsat - start
            x = row
            For i = 0 to ubound(Dato)
              If Dato(i) = rsarr(4,row) Then
                    Response.Write "<td width=42 Class=RammeKolonnerHB><img src=images/sp.gif width=42 height=1><br>" & "X" & "</td>"
              Else
                    Response.Write "<td width=42 Class=RammeKolonnerHB><img src=images/sp.gif width=42 height=1><br>" & "Y" & "</td>"
              End If
            Next
            ' eagleeye's kode indsat - slut

            'Fyld Tomme felter ind, jeg ved ikke om det skal være X eller Y??
            For ubound(Dato)+1 to 10
              Response.Write "<td width=42 Class=RammeKolonnerHB><img src=images/sp.gif width=42 height=1><br>" & "X" & "</td>"
            Next
           
            row = row + 1
            Response.Write "</tr>"
        Loop
Avatar billede george Nybegynder
06. maj 2006 - 00:55 #36
Erik >> Jeg må jo prøve at se om jeg kan finde ud af det.
Avatar billede george Nybegynder
06. maj 2006 - 01:04 #37
eagleeye >> hvad mener du : For ubound(Dato)+1 to 10 ?
Jeg har prøvet : For ubound(Dato) = 1 to 10 - virker ikke
prøvede også : For ubound(Dato)+1 = 1 to 10 - virkede heller ikke
Avatar billede eagleeye Praktikant
06. maj 2006 - 01:04 #38
har du prøvet det jeg har vist?
Avatar billede eagleeye Praktikant
06. maj 2006 - 01:04 #39
doh der magler jo lige i:

For i = ubound(Dato)+1 to 10
Avatar billede george Nybegynder
06. maj 2006 - 01:06 #40
Ja, men med denne fejl :
Microsoft VBScript compilation (0x800A0410)
Invalid 'for' loop control variable
/vl10/Vaertskaber.asp, line 301, column 16
For ubound(Dato)+1 to 10
---------------^
Avatar billede eagleeye Praktikant
06. maj 2006 - 01:07 #41
men det er muligt den først For:

            For i = 0 to ubound(Dato)


skal gå fra 1 og ikke 0, hvis X er forskudt en plads til højre.
Avatar billede george Nybegynder
06. maj 2006 - 01:09 #42
Rettet.

Nu denne fejl :Type mismatch
/vl10/Vaertskaber.asp, line 217

og det var denne : ReDim preserve Dato(Antal)

Hvis jeg fjerne "preserve" kommer der ingen fejl, men det ser stadig forkert ud.

Det er ved at være sent, skal vi for sætte en anden dag ?
Avatar billede erikjacobsen Ekspert
06. maj 2006 - 01:11 #43
Løsningen på dit sidste problem står i  http://www.eksperten.dk/spm/706369  30/04-2006 22:48:50
Avatar billede eagleeye Praktikant
06. maj 2006 - 01:11 #44
ja jeg er på vej i seng.

hvordan forkert?
Avatar billede george Nybegynder
06. maj 2006 - 01:14 #45
Gå du bare i seng. Jeg laver lige et billede og ligger op på http://www.bodygym.dk/test

PS: Jeg har fjernet alle "Y"'er og ladet "X"'er være, så der skal i princippet kun være 4 "X"'er i de 4 første kolonner, hvor der er en dato, resten skal være tomme.
Avatar billede eagleeye Praktikant
06. maj 2006 - 10:53 #46
Prøv at rette koden fra 06/05-2006 00:54:03  til dette:




        do while(row<=max) 'Looping rows
        Response.Write "<tr>"
        Response.Write "<td width=180 height=18 Class=RammeKolonnerVHB><img src=images/sp.gif width=180 height=1><br>" & rsarr(2,row) & " " & rsarr(3,row) & "</td>"
            ' eagleeye's kode indsat - start
            For i = 1 to ubound(Dato)
              If Dato(i) = rsarr(4,row) Then
                    Response.Write "<td width=42 Class=RammeKolonnerHB><img src=images/sp.gif width=42 height=1><br>" & "X" & "</td>"
              Else
                    Response.Write "<td width=42 Class=RammeKolonnerHB></td>"
              End If
            Next
            ' eagleeye's kode indsat - slut

            'Fyld Tomme felter ind, jeg ved ikke om det skal være X eller Y??
            iStart = ubound(Dato)
            if iStart = 0 then iStart = 1
            For i = iStart  to 10
              Response.Write "<td width=42 Class=RammeKolonnerHB><img src=images/sp.gif width=42 height=1></td>"
            Next
           
            row = row + 1
            Response.Write "</tr>"
        Loop
Avatar billede george Nybegynder
07. maj 2006 - 16:58 #47
Så er jeg tilbage.

Jeg har testet dit forslag og du kan se resultatet her :http://www.bodygym.dk/test

Jeg ved ikke om du er klar over eller har husket jeg kører uden preserve i redim linjen da den kom med en fejl : se 06/05-2006 00:38:25
Avatar billede erikjacobsen Ekspert
07. maj 2006 - 17:06 #48
Det bliver jo ikke mere korrekt på den måde. Du skal enten bruge preserve, med den rettelse som er i mit link ovenfor - eller allokere arrayet med korrekt størrelse inden din løkke.
Avatar billede eagleeye Praktikant
07. maj 2006 - 17:11 #49
Prøv at tjekke HTML kode igennem der mangler nok nogle tags i tabellen enten <tr> eller </tr> derfor står den skvæt.
Avatar billede george Nybegynder
07. maj 2006 - 17:46 #50
Det ser ud til at denne kode skal væk.

For i = 0 to ubound(Dato)
  If Dato(i) = rsarr(4,row) Then
      Response.Write "<td width=42 Class=RammeKolonnerHB><img src=images/sp.gif width=42 height=1><br>" & "X" & "</td>"
  Else
      Response.Write "<td width=42 Class=RammeKolonnerHB><img src=images/sp.gif width=42 height=1><br>" & " " & "</td>"
  End If
Next
Avatar billede eagleeye Praktikant
07. maj 2006 - 17:52 #51
ok?? men det er koden som skulle skrive X'et ud.
Avatar billede george Nybegynder
07. maj 2006 - 18:06 #52
Ok, jeg har sat den ind igen, men den er årsagen til at den laver 11 felter hvor der skulle være 10.
Avatar billede george Nybegynder
07. maj 2006 - 18:14 #53
Jeg havde For - Next sætningen stående 2 gange.

Jeg har opdateret http://www.bodygym.dk/test, der er stadig noget galt, men jeg prøver at gennemskue hvor fejeln er.
Avatar billede eagleeye Praktikant
07. maj 2006 - 18:30 #54
Du bliver nok nød til at vise den kode du har brugt til at lave det output det er ikke sådan lige til at gætte hvad der går galt.
Avatar billede george Nybegynder
07. maj 2006 - 18:38 #55
Nej det har du ret i, men jeg har siddet kigget lidt på den kode som Erik henviser til og har endelig fundet ud af det, som du kan se på den på http://www.bodygym.dk/test. Som du også kan se er der stadig lidt der skal rettes til.

Jeg ligger den opdateret koden op om lidt.
Avatar billede george Nybegynder
07. maj 2006 - 18:41 #56
Først koden der laver første rækker med datoer og "Dato":

        '  /////////////////        Dato sektion        /////////////////
       
        'Create object for the recordset
        Set rs = Server.CreateObject("ADODB.RecordSet")

        'Create DSN connection
        strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("log/vl10.mdb")

        ' Opbygning af SQL streng
        'strSQL = "SELECT * FROM Vaertskaber Where Aar =" & "'" & iAar & "'"
        strSQL = "SELECT * FROM Vaertskaber Where Aar = '" & iAar & "' ORDER BY RIGHT([date],2)"
        'Response.Write(strSQL)
           
        'Open DB
        rs.Open strSQL, strDSN, 1
       
        %>

        <table cellspacing="0" cellpadding="0" border="0" width="600">
        <tr>
        <td width="180" height="18" Class="RammeKolonnerVHTB" valign="top"><img src="images/sp.gif" width="180" height="1"><br>&nbsp;&nbsp;</td>
        <%
       
        i = 0
        j = 0
        do while not rs.eof 'Looping rows
            iString = rs("Date")
            If iString <> "" Then
                i = i + 1
                Antal = CInt(i)
                ReDim Dato(Antal)
                Dato(Antal) = rs(Antal)
                Response.Write "<td width=42 Class=RammeKolonnerHTB><img src=images/sp.gif width=42 height=1><br>" & iString & "</td>"
            End If
            rs.MoveNext
        Loop

        j = 9
        For k = i to j
            Response.Write "<td width=42 Class=RammeKolonnerHTB><img src=images/sp.gif width=42 height=1><br>Dato</td>"
        Next
   
        rs.close()
        Set rs = Nothing

Og så koden der udskriver navne og sætter "X" på de rigtige steder.

        <!--  /////////////////        Navneliste sektion        ///////////////// -->       
<%
        'Create object for the recordset
        Set rs = Server.CreateObject("ADODB.RecordSet")

        'Create DSN connection
        strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("log/vl10.mdb")

        ' Opbygning af SQL streng
        strSQL = "SELECT * FROM Vaertskaber Where Aar =" & "'" & iAar & "'"
        'Response.Write(strSQL)
       
        'Open DB
        rs.Open strSQL, strDSN, 1

        'Get the data from the DB into an array, for performance.
        if NOT rs.EOF then
            rsarr = rs.GetRows()
            max = Ubound(rsarr,2)
        else
            max = 0
        end if
       
%>

        <table cellspacing="0" cellpadding="0" border="0" width="600">

<%

        row=0
        do while(row<=max) 'Looping rows
        Response.Write "<tr>"
        Response.Write "<td width=180 height=18 Class=RammeKolonnerVHB><img src=images/sp.gif width=180 height=1><br>" & rsarr(2,row) & " " & rsarr(3,row) & "</td>"
            If rsarr(4,row) <> "" Then
                For i = 1 to 10
                    Response.Write "<td width=42 Class=RammeKolonnerHB><img src=images/sp.gif width=42 height=1><br>" & "X" & "</td>"
                Next
            Else
                    Response.Write "<td width=42 Class=RammeKolonnerHB><img src=images/sp.gif width=42 height=1><br>" & "Y" & "</td>"
            End If
            row = row + 1
            Response.Write "</tr>"
        Loop

        rs.close()
        Set rs = Nothing
Avatar billede george Nybegynder
07. maj 2006 - 18:45 #57
Undskyld, jeg tror jeg fik kopieret fra min back-up fil. Checker lige...
Avatar billede george Nybegynder
07. maj 2006 - 18:48 #58
Her er den rigtige. Sorry ;-)

Først koden der laver første rækker med datoer og "Dato":

        '  /////////////////        Dato sektion        /////////////////
       
        'Create object for the recordset
        Set rs = Server.CreateObject("ADODB.RecordSet")

        'Create DSN connection
        strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("log/vl10.mdb")

        ' Opbygning af SQL streng
        'strSQL = "SELECT * FROM Vaertskaber Where Aar =" & "'" & iAar & "'"
        strSQL = "SELECT * FROM Vaertskaber Where Aar = '" & iAar & "' ORDER BY RIGHT([date],2)"
        'Response.Write(strSQL)
           
        'Open DB
        rs.Open strSQL, strDSN, 1
       
        %>

        <table cellspacing="0" cellpadding="0" border="0" width="600">
        <tr>
        <td width="180" height="18" Class="RammeKolonnerVHTB" valign="top"><img src="images/sp.gif" width="180" height="1"><br>&nbsp;&nbsp;</td>
        <%
       
        i = 0
        j = 0
        Redim Dato(0)
        do while not rs.eof 'Looping rows
            iString = rs("Date")
            If iString <> "" Then
                i = i + 1
                Antal = CInt(i)
                ReDim preserve Dato(Antal)
               
                'Erik's ændring
                Dato(Antal) = iString               
               
                'Dato(Antal) = rs(Antal)
                Response.Write "<td width=42 Class=RammeKolonnerHTB><img src=images/sp.gif width=42 height=1><br>" & iString & "</td>"
            End If
            rs.MoveNext
        Loop

        j = 9
        For k = i to j
            Response.Write "<td width=42 Class=RammeKolonnerHTB><img src=images/sp.gif width=42 height=1><br>Dato</td>"
        Next
       
        rs.close()
        Set rs = Nothing



Og så koden der udskriver navne og sætter "X" på de rigtige steder.

        'Create object for the recordset
        Set rs = Server.CreateObject("ADODB.RecordSet")

        'Create DSN connection
        strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("log/vl10.mdb")

        ' Opbygning af SQL streng
        strSQL = "SELECT * FROM Vaertskaber Where Aar =" & "'" & iAar & "'"
        'Response.Write(strSQL)
       
        'Open DB
        rs.Open strSQL, strDSN, 1

        'Get the data from the DB into an array, for performance.
        if NOT rs.EOF then
            rsarr = rs.GetRows()
            max = Ubound(rsarr,2)
        else
            max = 0
        end if
       
%>

        <table cellspacing="0" cellpadding="0" border="0" width="600">

<%
        do while(row<=max) 'Looping rows
        Response.Write "<tr>"
        Response.Write "<td width=180 height=18 Class=RammeKolonnerVHB><img src=images/sp.gif width=180 height=1><br>" & rsarr(2,row) & " " & rsarr(3,row) & "</td>"
            ' eagleeye's kode indsat - start
            For i = 1 to ubound(Dato)
              If Dato(i) = rsarr(4,row) Then
                    Response.Write "<td width=42 Class=RammeKolonnerHB><img src=images/sp.gif width=42 height=1><br>" & "X" & "</td>"
              Else
                    Response.Write "<td width=42 Class=RammeKolonnerHB></td>"
              End If
            Next
            ' eagleeye's kode indsat - slut

            'Fyld Tomme felter ind, jeg ved ikke om det skal være X eller Y??
            iStart = ubound(Dato)
            if iStart = 0 then iStart = 1
            For i = iStart  to 10
              Response.Write "<td width=42 Class=RammeKolonnerHB><img src=images/sp.gif width=42 height=1></td>"
            Next
           
            row = row + 1
            Response.Write "</tr>"
        Loop           

        rs.close()
        Set rs = Nothing
Avatar billede george Nybegynder
07. maj 2006 - 19:01 #59
Så virker det. Resultatet er her : http://www.bodygym.dk/test

Her er de to rettelser der skulle til.
Linje 6 rettet til sidst i linjen.
            For i = 1 to ubound(Dato)
              If Dato(i) = rsarr(4,row) Then
                    Response.Write "<td width=42 Class=RammeKolonnerHB><img src=images/sp.gif width=42 height=1><br>" & "X" & "</td>"
              Else
                    Response.Write "<td width=42 Class=RammeKolonnerHB>" & "&nbsp;" & "</td>"
              End If
            Next

Linje 3 rettet fra 10 til 9
            iStart = ubound(Dato)
            if iStart = 0 then iStart = 1
            For i = iStart  to 9
              Response.Write "<td width=42 Class=RammeKolonnerHB><img src=images/sp.gif width=42 height=1></td>"
            Next

Tak til jer begge for at have tålmodighed med mig, det var en hård en at knække. Jeg lærer nok det med array en dag ;-)

eagleeye >> da Erik ikke samler på point så må du lige komme med et svar så du kan få de velfortjente point.
Avatar billede george Nybegynder
07. maj 2006 - 19:05 #60
Hov, skulle måske lige forklare hvad jeg ændrede i linje 6 så andre også forstår.

Linje 6 : tilføjet " & "&nbsp;" & " så den bare laver et blankt felt.
Avatar billede eagleeye Praktikant
07. maj 2006 - 19:17 #61
Jamen ok så kommer her 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