Asp e gli Array

In ASP possiamo considerare un array come un formato di dati corrispondente ad un elenco di elementi dove ogni elemento è contraddistinto da una coppia di chiave e valore.

Di norma, si usa raccogliere sotto il termine informatico array sia gli elementi matematici corrispondenti a vettori sia le matrici. Gli array partono per natura da zero (0) e non da uno (1), ma possiamo anche gestirli partendo dal valore che ci interessa o anche manipolarli con valori non consecutivi.

Vediamo comunque un primo esempio:

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:

Dim MyString, MyArray
MyString = "Paola,Mario,Luca"
MyArray = Split(MyString, ",")

-LBound/ UBound-
Mi restituisce 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:

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>")


Ecco il risultato:

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

L’unico 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:

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

Ciao Fab


Fabrizio Cannatelli

Autore e Founder di Informarea, sono un appassionato di informatica e tecnologia da sempre. La voglia di comunicare e di condividere sul Web le mie curiosità e le mie conoscenze, mi ha spinto a lanciarmi nel progetto di questo sito. Nato un po' per gioco e un po' per passione, oggi è diventato una grande realtà.

Fabrizio Cannatelli

Approfondimenti

Lascia un commento

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.