Errore Object not a collection - Errori ASP

Descrizione

La query in esecuzione non è completa e richiede valori non specificati.

Messaggio d'Errore

Messaggio in Inglese

Microsoft VBScript runtime error '800a01c3' 
Object not a collection 
/path/to/file.asp, line 10

Errore Object not a collection

La spiegazione di questo errore è abbastanza semplice.
Quello 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 seguente è possibile scorrere una intera collezione eseguendo un comando sui valori.

For each nomelemento in collezione
' esegui un comando
Next 

Ad esempio, il codice seguente stamperà a video tutti i campi della form nella collezione con a fianco il rispettivo valore.

For each campo in Request.Form
  Response.Write("<p>" & campo & " : " & Request.Form(campo))
Next 

Questo è un tipo di esempio di scorrimento di una collezione.

Come risolvere il problema

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 il codice seguente restituirà errore poiché Request.Form("getfile") non è una collection.

For each elemento in Request.form("getfile") 
... 
Next 

Per correggere il problema controllate il tipo di variabile prima di eseguire una iterazione.


ASP.weppos.com e ASP.weppos.it sono di proprietà di Simone Carletti.
Scopri il mio sito o visita il mio Simone Carletti's profile on LinkedIn