"Jørn Andersen" <jorn@jorna.dk> skrev i en meddelelse
news:vjfj52dhcjk0vs1p6n126rfsn0l4bl1kv9@4ax.com...
> On Thu, 4 May 2006 00:12:40 +0200, "bsn" <bsnsnabelaoncabledotdk>
> wrote:
>
>>Jeg bruger denne sætning til at danne array med ferie- og fridage...
>>(ud fra en tabel med enkeltdatoer)
>>
>>arrFerieFridage = objRsFerieFridage.GetRows
>>
>>Vil denne sætning ikke læse alle datoer fra et recordset ind i et
>>array...???
>
> Jo.
>
>>Det eneste jeg kan få udskrevet er den første dato i arrFerieFridage...
>
> Check, hvor mange datoer, du har i array'et med:
> Response.Write Ubound(arrFerieFridage, 2)
> - hvor 2-tallet angiver, at det er anden dimension.
>
> VBScript-dokumentationen siger:
> dimension
> Optional. Whole number indicating which dimension's upper bound is
> returned. Use 1 for the first dimension, 2 for the second, and so on.
> If dimension is omitted, 1 is assumed.
>
> - så:
> Response.Write Ubound(arrFerieFridage, 1)
> er altså det samme som:
> Response.Write Ubound(arrFerieFridage)
>
> Men et recordset er i princippet altid to-dimensionelt (det er jo et
> udtræk fra en tabel, dvs. med rækker og kolonner). Se fx:
> <url:
http://www.aspfaqs.com/aspfaqs/ShowFAQ.asp?FAQID=161>
> (eller søg på "getrows method" på Google).
>
> Ovenstående link fortæller bl.a.:
> To display this array data, we need to use two nested For loops. The
> first loop needs to loop through each row. The total number of rows
> can be found by examining the upper bound of the second dimension of
> the array (UBound(ArrayName, 2)). Next, an inner loop needs to step
> through each column of the current row. This can be done via a For
> loop as well; to find the total number of columns, retrieve the
> upper-bound of the first dimension of the array (UBound(ArrayName,
> 1)).
>
> Det forklarer så samtidig, hvorfor du kun får udskrevet den første
> dato. Du skrev i det første indlæg:
> For j = 0 To Ubound(arrFerieFridage)
> Response.Write "arr(j,0)= " & arrFerieFridage(j,0) & "<br>"
> Next
>
> Ved første gennemløb er j = 0, så det du trækker ud er:
> arrFerieFridage(0,0)
> - hvilket angiver værdien i kolonne 0, række 0
>
> Men ved næste gennemløb er j = 1, så det du trækker ud er:
> arrFerieFridage(1,0)
> - hvilket angiver værdien i kolonne 1, række 0
>
> Men du har formentlig trukket FerieFridage ud med:
> SELECT FerieFridage FROM osv.
> - så der er kun én kolonne (nr. 0), hvorfor du får en fejl.
>
> Det burde virke med:
> For j = 0 To Ubound(arrFerieFridage, 2)
> Response.Write "arr(0,j)= " & arrFerieFridage(0,j) & "<br>"
> Next
Det var denne der snød mig...
> Så vil første gennemløb give det samme som før (0,0), mens andet
> gennemløb giver:
> arrFerieFridage(0,1)
> - hvilket angiver værdien i kolonne 0, række 1
>
>
>>Kan du forklare det, så også jeg kan forstå det...
>
> Håber det giver lidt mening.
> Den har også snydt mig (indtil flere gange). Så af en eller anden
> grund virker det mest intuitivt (for os to i hvert fald), at dimension
> 1 er rækker, mens 2 er kolonner - men det er altså omvendt.
Ja, det er den omvendte verden...men sådan er det jo...
snydt godt og grundigt er jeg blevet - det har været en lang hård læring,
men lærerig
Jeg bøjer mig i støvet...Du formåede at bibringe forståelsen...Tak for
tålmodigheden...;-D
Måske jeg vender tilbage med andre problematikker...
Bjarne