Object not a collection

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 10

Da 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.