Item cannot be found in the collection

Item cannot be found in the collection Item cannot be found in the collection

Inserito il 07/07/2005 - letto 5930 volte

Messaggio di errore in Inglese

ADODB.Recordset error '800a0cc1'
Item cannot be found in the collection corresponding to the requested name or ordinal.
/folder/file-name.asp, line 10

Messaggio di errore in Italiano

ADODB.Recordset '0x800A0CC1'
Impossibile trovare l'oggetto nell'insieme corrispondente al nome o al numero richiesto.
/cartella/nome-file.asp, line 10

Da cosa dipende e come risolvere il problema...

Per eseguire delle operazioni tra pagine ASP e database, è necessario definire come prima cosa una connessione, in seguito un recordset ed infine eseguire una query.
La query ha lo scopo di interrogare il database e fornire, mediante il recordset, il risultato di questa operazione nonché i dati contenuti nel database che soddisfano le richieste.

Questo errore è causato da una situazione in cui si tenta di accedere ad un campo di un database non presente all'interno del recordset.

I motivi possono essere principalmente due:

  • Non esiste un campo con tale nome all'interno nel database.
  • Il campo esiste ma non è stato incluso all'interno del recordset corrente.

Nel primo caso il problema è lampante. Immaginando di aver definito un recordset chiamato objRs, se io tento di richiamare objRs("campo3") che non è presente all'interno del database, allora di fatto ASP non potrà completare l'istruzione richiesta.

Il secondo caso si verifica invece quando nella query è stato limitato il numero dei campi restituiti.

Esempio:

strSQL = "select campo1, campo2, campo3 FROM tabella"

Questa query, una volta eseguita, restituirà i valori associati ai 3 campi dichiarati nella prima parte della select, ammesso che siano presenti dei record all'interno della tabella indicata.

Ammettendo che la tabella contenga anche un campo chiamato campo4, una qualsiasi esecuzione che includa objRs("campo4") produrrà comunque l'errore sopra citato, poiché di fatto il recordset non è stato istruito per restituire tale campo.

Prestare dunque attenzione alla presenza del campo richiesto all'interno della tabella e verificare sempre che i campi utilizzati siano stati richiesti nella query in esecuzione.