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
Segui Informarea |