Avatar billede george Nybegynder
30. april 2006 - 22:14 Der er 13 kommentarer og
2 løsninger

Viser ikke indhold af Array

Hjælp! Denne haster lidt.

Jeg har en kode som denne nedenfor og alt ser ud til at virke bort set fra sidste halvdel, der hvor iDate(i) skal skrives ud. Der ligger ikke noget i iDate. Er det nogen der kan genneskue hvorfor ? Det er meningen at jeg vil sortere iDate inden den skrives ud i sidste del af koden, men det ville jeg lige vente med.

        Dim myArr, myArray, myNewArray, t, u, v, FName, EName, row, rs, iAar, eAar, iDate
       
        eAar = Request.querystring("Aar")
        If eAar <> "" Then
            iAar = eAar
        Else
            iAar = "200506"           
        End If

        '/// Værtskaber - Main Data ////////////////////////////////////////////////////////////
        '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

        'Make a loop finding the number of dates
        i = 0
        do while not rs.eof 'Looping rows
            iString = rs("Date")
            Response.Write iString & "<br>"           
            If iString <> "" Then
                i = i + 1
            End If
            rs.MoveNext
        Loop
       
        'What is the number
        Antal = CInt(i)
        Response.Write Antal & "<br>"
        ' hertil virker det fint
       
        'Redimention of iDate
        ReDim iDate(Antal)

        If not rs.eof then
            For i = 0 to Antal
                iDate(i) = rs(i)
            Next
        End If
           
        Max = ubound(iDate)
        'Response.Write Max & "<br>"
       
        For i = 1 to Max
            Response.Write "TEST" & iDate(i) & "<br>"
        Next
       
        'Closing database, we don't need it anymore - we have the info in the array
        rs.close()
        Set rs = Nothing
Avatar billede erikjacobsen Ekspert
30. april 2006 - 22:20 #1
Du kan ikke hive noget ud af rs efter den er kommet til rs.eof - hvilke data er det du vil have i iDate - alle rs("Date") ?    Det skal du gøre i din do while-løkke
Avatar billede eagleeye Praktikant
30. april 2006 - 22:21 #2
På det tidspunkt du udfylder iDate vil EOF altid være sat da du har et loop før som laver rs.Movenext

        'Redimention of iDate
        ReDim iDate(Antal)

        If not rs.eof then
            For i = 0 to Antal
                iDate(i) = rs(i)
            Next
        End If


Så prøv at tjekek på BOF:

        'Redimention of iDate
        ReDim iDate(Antal)

        If not rs.bof then
            For i = 0 to Antal
                iDate(i) = rs(i)
            Next
        End If
Avatar billede eagleeye Praktikant
30. april 2006 - 22:23 #3
EOF efter sidste post
BOF betyder før første post.

Er er recordsetet tomt vil både BOF og EOF være sat til true.
Er der noget i recordsetet og man har løbet det igennem vil BOF være false og EOF true
Avatar billede eagleeye Praktikant
30. april 2006 - 22:29 #4
nej BOF dur heller ikke hvis du skal jo hente noget fra rs ind i iDate?
Så skal du havde en movefirst ind før det andet loop:


        'Redimention of iDate
        ReDim iDate(Antal)
        rs.MoveFirst
        If not rs.eof then
            For i = 0 to Antal
                iDate(i) = rs(i)
            Next
        End If
Avatar billede erikjacobsen Ekspert
30. april 2006 - 22:31 #5
I din do while

        'Make a loop finding the number of dates
        i = 0
        do while not rs.eof 'Looping rows
            iString = rs("Date")
            Response.Write iString & "<br>"         
            If iString <> "" Then
                i = i + 1
            redim preserve iDate(i)
            iDate(i-1)=iString
            End If
            rs.MoveNext
        Loop

        Max = ubound(iDate)
        'Response.Write Max & "<br>"
     
        For i = 0 to Max
            Response.Write "TEST" & iDate(i) & "<br>"
        Next
Avatar billede george Nybegynder
30. april 2006 - 22:45 #6
erikjacobsen >> med din rettelse får jeg fejlen:
Microsoft VBScript runtime (0x800A000D)
Type mismatch
/vl10/vaertskaber.asp, line 252

eagleeye >> med din rettelse får et forkert output. Den skriver ikke kun datoerne, men hvad der er i de andre felter i databasen. Hvis du forstår hvad jeg mener.
Avatar billede george Nybegynder
30. april 2006 - 22:46 #7
erikjacobsen >> linje 252: redim preserve iDate(i)
Avatar billede erikjacobsen Ekspert
30. april 2006 - 22:46 #8
Ja, sikkert, og linie 252 er ...?
Avatar billede erikjacobsen Ekspert
30. april 2006 - 22:48 #9
Så lav en

  redim iDate(0)

før løkken
Avatar billede george Nybegynder
30. april 2006 - 22:51 #10
Yep så virker det.

Svar = points

Hvordan får vi delt point ? Normalt er det vist den der komme med den rigtige løsning først eller hvordan ?
Avatar billede erikjacobsen Ekspert
30. april 2006 - 22:53 #11
Jeg samler slet ikke på point, tak.
Avatar billede george Nybegynder
30. april 2006 - 22:53 #12
Tak for hurtig hjælp. Nu vil jeg sætte mig og kigge lidt på koden. Det har man jo ikke så meget tid til med så hurtige folk som jer to ;-)
Avatar billede george Nybegynder
30. april 2006 - 22:56 #13
Næh det kan jeg godt forstå, det er jo ikke det, det handler om, men der er ofte store discussioner herinden om meget små points, så man ved jo aldrig.
Avatar billede eagleeye Praktikant
30. april 2006 - 22:57 #14
Du bestemmer hvem der skal havde og hvor mange point. Jeg kan da lige ligge et svar hvis du mener jeg har fortjænt lidt :)

Du kan også selv lave et svar og acceptere dit eget svar.
Avatar billede george Nybegynder
30. april 2006 - 23:00 #15
Ja vi deler sku' i porten. Tak for input.
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

IT-JOB