Object not a collection
Object not a collection
Inserito il 04/11/2005 - letto 3706 volte
Messaggio di errore in Inglese
Microsoft VBScript runtime error '800a01c3'
Object not a collection
/folder/file-name.asp, line 10Da cosa dipende e come risolvere il problema...
La spiegazione di questo errore, in sé, è decisamente molto semplice.
Ciò
che può risultare meno intuitivo è comprendere le motivazioni alla base
dell'errore, soprattutto se non si conosce il significato di una collezione nell'ambito dello sviluppo ASP.
In
ASP una collezione è un gruppo di elementi, composto da una coppia di
elementi chiamati chiave e valore e riconducibili ad una stessa
tipologia di informazione.
Chiariamo meglio il concetto.
Se non prendiamo in esempio l'insieme delle coppie chiave/valore contenute nella Request.Form stiamo parlando di una collezione.
Gli
elementi che fanno parte di questa collezione sono tutti i dati che
appartengono alla form, sia i nomi dei campi, sia i valori assunti dai
rispettivi campi.
In questa collezione di elementi la chiave è
rappresentata dal nome del campo mentre il valore per ogni singola
chiave è il valore associato al campo con il nome specificato.
Anche Request.QueryString rappresenta una collezione così come Request.ServerVariables costituisce la collezione delle variabili server.
Attenzione però. Request.Form rappresenta la collezione di tutti i campi/valore form contenuti nella pagina di provenienza.
Presupponendo di avere un form chiamato "data" il comando Request.Form("data") non corrisponderà più ad una collezione, bensì ad un singolo valore.
Si dice che Request.Form("data") è un elemento della collezione Request.Form dove "data" è la chiave mentre ciò che restituisce la chiamata a Request.Form("data") è il valore associato a tale chiave.
Attraverso il costrutto
For each nomelemento in collezione
...
Next È possibile scorrere una intera collezione eseguendo un comando sui valori.
Ad esempio, il codice
For each campo in Request.Form
Response.Write("" & campo & " : " & Request.Form(campo))
Next
stamperà a video tutti i campi della form nella collezione con a fianco il rispettivo valore.
Questo è un tipo di esempio di scorrimento di una collezione.
Ma torniamo al nostro errore. Ora che avete chiaro cosa sia una collezione, possiamo spiegare meglio il problema.
L'errore vi avverte che state cercando di scorrere come collezione un elemento che collezione non è.
Ad esempio
For each elemento in Request.form("getfile")
...
Next restituirà errore poiché Request.Form("getfile") non è una collection.
Per correggere il problema controllate il tipo di variabile prima di eseguire una iterazione.
