"Jørn Andersen" <jorn@jorna.dk> skrev i en meddelelse
news:h6mv42hrqeqn78hql2fq5rd32jnp2eauql@4ax.com...
> On Tue, 25 Apr 2006 14:26:30 +0200, "bsn" <bsnsnabelaoncabledotdk>
> wrote:
>
>>>> For j = 0 To Ubound(arrFerieFridage)
>>>> Response.Write "j= " & j
>>>> If datDato = arrFerieFridage(j) Then <----- Linie 93
>>>
>>> Det lyder underligt, at indekset kan komme uden for området, når det
>>> er begrænset af UBound ...?
>>
>>Har prøvet denne linje, og den giver godt nok en dato...
>>Response.Write "j= " & arrFerieFridage(j,1) '''altså kolonne 2 i indexet
>
> Der er noget, der ikke passer her.
> Hvis dit array er baseret på:
> strSqlFerieFridage = "SELECT FerieFridag FROM ...
> - vil det blive et én-dimensionelt array. Og et sådant kan udskrives
> med: arrFerieFridage(j)
Det bliver det ikke her ved mig - arrFerieFridage(j) giver fejlen :
Der opstod en Microsoft VBScript-kørselsfejl (0x800A0009)
Indekset er uden for området: 'arrFerieFridage'
>
> Men nu har vi pludselig gang i: arrFerieFridage(j,1) - altså et
> to-dimensionelt array. Har du ændret Sql'en?
Nej...det var for at prøve mig frem...er lidt lam hvad angår arrays
>
> Opfat et én-dimensionelt array som en liste:
> arrBy(0) = "København"
> arrBy(1) = "Odense"
> arrBy(2) = "Århus"
> arrBy(3) = "Aalborg"
> - osv.
>
> Et to-dimensionelt array kan opfattes som en tabel:
> (Her afstanden fra Kbh., til den pågældende by iflg. krak.dk)
> arrBy(0, 0) = "København"
> arrBy(0, 1) = 0
> arrBy(1, 0) = "Odense"
> arrBy(1, 1) = 163
> arrBy(2, 0) = "Århus" 'Via Sjællands Odde
> arrBy(2, 1) = 116
> arrBy(3, 0) = "Aalborg" 'Via Sjællands Odde
> arrBy(3, 1) = 232
> - osv.
>
> Selv om du har flere kolonner i tabellen, er det stadig et
> to-dimensionelt array (Her tilføjet rejsetid - som tekst):
> arrBy(0, 0) = "København"
> arrBy(0, 1) = 0
> arrBy(0, 2) = "0"
> arrBy(1, 0) = "Odense"
> arrBy(1, 1) = 163
> arrBy(1, 2) = "1:45"
> arrBy(2, 0) = "Århus" 'Via Sjællands Odde
> arrBy(2, 1) = 116
> arrBy(2, 2) = "2:34"
> arrBy(3, 0) = "Aalborg" 'Via Sjællands Odde
> arrBy(3, 1) = 232
> arrBy(3, 2) = "3:44"
> - osv.
>
> Men hvis du fx vil have flere ruter til samme by, er du nødt til at
> have en dimension mere med:
> arrBy(0, 0, 0) = "København"
> arrBy(0, 1, 0) = 0
> arrBy(0, 2, 0) = "0"
> arrBy(1, 0, 0) = "Odense"
> arrBy(1, 1, 0) = 163
> arrBy(1, 2, 0) = "1:45"
> arrBy(2, 0, 0) = "Århus" 'Via Sjællands Odde
> arrBy(2, 1, 0) = 116
> arrBy(2, 2, 0) = "2:34"
> arrBy(2, 0, 1) = "Århus" 'Via Odense C
> arrBy(2, 1, 1) = 306
> arrBy(2, 2, 1) = "3:13"
> arrBy(3, 0, 0) = "Aalborg" 'Via Sjællands Odde
> arrBy(3, 1, 0) = 232
> arrBy(3, 2, 0) = "3:44"
> arrBy(3, 0, 1) = "Aalborg" 'Via Odense C
> arrBy(3, 1, 1) = 414
> arrBy(3, 2, 1) = "4:15"
> - osv.
>
> Som du kan se, er arrays nul-nummererede. Men dimesionerne er
> 1-nummererede.
>
> Så Ubound(arrBy) svarer til Ubound(arrBy, 1) - i dette tilfælde = 3,
> hvis vi dropper "- osv." (der er altså op til 4 værdier - svarende til
> antal byer).
> Ubound(arrBy, 2) er = 2 (der er altså op til 3 værdier - svarende til
> antal oplysninger: Bynavn, afstand, rejsetid).
> Ubound(arrBy, 3) er = 1 (der er altså op til 2 værdier - svarende til
> antal ruter).
>
> Hvis du udskriver: arrBy(j, 0, 0), vil du få en liste over bynavne
> Udskriver du arrBy(2, j, 0), vil du få de alternative afstande til
> Århus, og arrBy(2, j, 1) giver dig de alternatoive rejsetider, også
> til Århus.
OK - tak for den grundige indførelse i arrays...
>
> Hvilket bringer os tilbage til dit problem. Hvad giver:
> Response.Write "arr(j,0)= " & arrFerieFridage(j,0)
> - altså kolonne 1 i indexet?
Den giver en dato...kanon...
> Og hvordan ser din aktuelle Sql ud?
Den er ikke ændret...
strSqlFerieFridage = "SELECT FerieFridag" & _
" FROM tblSkoleFridage" & _
" WHERE FerieFridag > Date() AND" & _
" FerieFridag < DateAdd('m',1,Date())" & _
" ORDER BY FerieFridag;"
'Response.Write strSqlFerieFridage
'Response.End
Set objRsFerieFridage = Conn.Execute(strSqlFerieFridage)
arrFerieFridage = objRsFerieFridage.GetRows
objRsFerieFridage.Close
Set objRsFerieFridage = Nothing
>
> Jeg kan ikke gennemskue, hvad der går galt. Du er nødt til at være
> lidt mere præcis med dine oplysninger
Mit gennemløb ser sådan ud:
Kode start:
For i = 9 To 60
datDato = DateAdd("d", i, datStartDato)
intUgedag = DatePart("w", datDato, 2, 2)
If intUgeDag = 6 Or intUgeDag = 7 Then
' Do nothing
Else
' Check om datoen er en FerieFridag
blnFerieFridag = False
For j = 0 To Ubound(arrFerieFridage)
Response.Write "arr(j,0)= " & arrFerieFridage(j,0)
If datDato = arrFerieFridage(j,0) Then
blnFerieFridag = True
Exit For
End If
Next
End If
If Not blnFerieFridag Then
intAntalUdskrevneDage = intAntalUdskrevneDage + 1
Tael=Tael+1
Tael1=Tael1+1
' Udskriver kold og varm menu
Response.Write "<tr>"
Response.Write "<td align=center>" & "<b>" & DatePart("ww",datDato,2,2)
& "</b>" & " - " & "<input type=" & "text" & " readonly=" & "True" & "
VALUE=" & datDato & " name=" & "txtDato" & Tael & " size=" & "8" & ">" &
"</td>"
'Do Until RS.EOF
Response.Write "<td>" & "<img BORDER=0 src=" & "../images/" &
RS("Billed") & ">" & "<br>" & "<input type=" & "checkbox" & " name=" & "C" &
Tael & " value=" & Rs("MenuID") & ">" & " - " & Rs("MenuTekst") & "</td>"
RS.MoveNext
'Exit Do
'Loop
'Do Until RS1.EOF
Response.Write "<td>" & "<img BORDER=0 src=" & "../images/" &
RS1("Billed") & ">" & "<br>" & "<input type=" & "checkbox" & " name=" & "C"
& Tael1 & " value=" & Rs1("MenuID") & ">" & " - " & Rs1("MenuTekst") &
"</td>"
Response.Write "</tr>"
RS1.MoveNext
'Exit Do
'Loop
' Hvis der er udskrevet 10 dage, går vi ud af loopen
Response.Write "intAntalUdskrevneDage= " & intAntalUdskrevneDage
If intAntalUdskrevneDage > 9 Then
Exit For
End If
End If
Next
Kode slut
Resultat af kode:
intAntalUdskrevneDage= 1
intAntalUdskrevneDage= 2arr(j,0)= 01-05-2006
intAntalUdskrevneDage= 3arr(j,0)= 01-05-2006
intAntalUdskrevneDage= 4arr(j,0)= 01-05-2006
intAntalUdskrevneDage= 5arr(j,0)= 01-05-2006
intAntalUdskrevneDage= 6arr(j,0)= 01-05-2006
intAntalUdskrevneDage= 7
intAntalUdskrevneDage= 8
intAntalUdskrevneDage= 9arr(j,0)= 01-05-2006
intAntalUdskrevneDage= 10
Udskriftet giver ikke det ønskede resultat, som er en liste med
10 datoer, hvoraf ingen er en lørdag, søndag eller en feriefridag
> Men jeg håber ovenstående kan give dig lidt at arbejde med i forhold
> til at forstå arrays.
Det vil jeg nærstudere - meget fin forklaring...
>
> Good luck!
Tak
Bjarne