PAGINE
ASP
Periodico
n. 1 - Febbraio 1999 -
Array
e dintorni
Dim
myArray(1)
myArray(0) = "this"
myArray(1) = "that"
ReDim Preserve myArray(2)
myArray(2) = "theother"
Gli
array sono indicizzati a zero, questo significa che
se scrivo come sopra Dim my Array(1) significa che
ho riservato due "righe" del nostro array,
la riga 0 e la riga 1.
Per
variare la dimensione di un array mantenendo inalterato
il precedente contenuto (a meno di accorciare la dimensione
dell'array ovviamente), uso Redim con la clausola
Preserve identicamente a come avveniva in Visual Basic.
COME
OPERARE CON GLI ARRAY MONODIMENSIONALI
-Split-
Esempio:
<CODE>
Dim
MyString, MyArray
MyString = "Paola,Mario,Luca"
MyArray = Split(MyString, ",")
<CODE>
Risultato:
Un array bidimensionale chiamato "MyArray"
con 3 elementi.
-LBound/
UBound-
Mi
restituisci il valore più basso e alto rispettivamente
dell'array specificato. Il numero massimo di elementi
disponibili nell'array, oltre all'ArrayName si può
specificare l'elemento da controllare come meglio
spiegato nel seguito.
LBound(ArrayName)
ARRAY
MULTIDIMENSIONALI
Di
sintassi intuitiva si dichiarano così: Dim MyArray(x,
y) dove x=colonne e y=righe.
Eccovi
un chiaro esempio di come poter usare un array multidimensionale
(tratto dal sito http://www2.brinkster.com/home/codelib/howto/aspgeneral/arrays3.asp)
<CODE>
Dim myArray(2,3)
'myArray(col,row)
'Array def is (dept,item,cost)
myArray(0,0) = "housewares"
myArray(1,0) = "sauce pan"
myArray(2,0) = "22.50"
myArray(0,1) = "housewares"
myArray(1,1) = "toaster"
myArray(2,1) = "12.50"
myArray(0,2) = "housewares"
myArray(1,2) = "wooden spoon"
myArray(2,2) = "4.50"
myArray(0,3) = "housewares"
myArray(1,3) = "oven cleaner"
myArray(2,3) = "2.50"
Response.Write("<table border=2>")
Response.Write("<tr><td>Row</td><td>Department</td>")
Response.Write("<td>Item Name</td><td>Cost</td></tr>")
For i = 0 to UBound(myArray, 2)
Response.Write("<tr><td>#"
& i & "</td>")
Response.Write("<td>"
& myArray(0,i) & "</td>")
Response.Write("<td>"
& myArray(1,i) & "</td>")
Response.Write("<td>"
& myArray(2,i) & "</td></tr>")
Next
Response.Write("</table>")
</CODE>
The above yields the following result:
| Row |
Department |
Item
Name |
Cost |
| #0 |
housewares |
sauce
pan |
22.50 |
| #1 |
housewares |
toaster |
12.50 |
| #2 |
housewares |
wooden
spoon |
4.50 |
| #3 |
housewares |
oven
cleaner |
2.50 |
By: Jared Stauffer
L'unica
passaggio ostico di questo codice è il passaggio dove
viene preso in considerazione il ciclo For.
UBound(MyArray,
2) significa che prendo il valore maggiore del secondo
elemento dell'array (cioè il numero massimo delle
righe, "2"). Il ciclo "For" serve
in altre parole per riempire tutta la tabella, fino
all'ultima riga disponibile.
RECORDSET
E ARRAY MULTIDIMENSIONALI
Vediamo
subito il codice:
<CODE>
sql = "select * from myTable"
Set RS = Conn.Execute(sql)
'Mette
il Recordset nell'array
Dim myArray()
numRows = 0
Do While NOT RS.EOF
numRows = numRows + 1
ReDim Preserve myArray(3,
numRows)
myArray(0, numRows - 1) =
RS(0)
myArray(1, numRows - 1) =
RS(1)
myArray(2, numRows - 1) =
RS(2)
myArray(3, numRows - 1) =
RS(3)
RS.MoveNext
Loop
</CODE>
Come
importare in pratica tabelle con stringhe sql sarà
il nostro obiettivo finale, accantoniamo quindi momentaneamente
l'argomento per richiamarlo in seguito.
Per
completare il bagaglio "strumenti utili"
parliamo di "CICLI CONDIZIONALI".
Prosegui...