Impossible d'ajouter des éléments à un objet Dictionary

Résolu
Chris_LaFouine Messages postés 109 Date d'inscription mardi 13 avril 2004 Statut Membre Dernière intervention 4 juin 2008 - 11 mars 2005 à 09:29
Chris_LaFouine Messages postés 109 Date d'inscription mardi 13 avril 2004 Statut Membre Dernière intervention 4 juin 2008 - 11 mars 2005 à 16:05
J'ai un problème concernant l'objet Dictionary... voilà mon code...

set dictListeParam= Server .CreateObject("Scripting.Dictionary")
While NOT rsInfoIndexUtil.EOF
Response.Write(rsInfoIndexUtil(0)&"-"&rsInfoIndexUtil(1)&"
")
dictListeParam.Add rsInfoIndexUtil(0),rsInfoIndexUtil(1)
rsInfoIndexUtil.moveNext
Wend

Mon rsInfoIndexUtil contient le résultat une requete "SELECT" qui renvoie 2 champs
Maintenant, dès que je le lance dans mon navigateur voilà ce qu'il me met :

<!--StartFragment -->ajoutseance-Ajout d'une activité à un enfant
annulinscription-Annulation d'un enfant à une activité

Erreur d'exécution Microsoft VBScript error '800a01c9'
Cette clé est déjà associée à un élément de cette collection.
/GIMS/concept_indexutil.asp, line 15

Ma requete fonctionne bien pourtant l'ajout foire à mort!
Pourtant, dès que j'essaye ceci :

set dictListeParam =Server.CreateObject("Scripting.Dictionary")
While NOT rsInfoIndexUtil.EOF
Response.Write(rsInfoIndexUtil(0)&"-"&rsInfoIndexUtil(1)&"
")
dictListeParam.Add rsInfoIndexUtil(0),rsInfoIndexUtil(1)
dictListeParam.RemoveAll
rsInfoIndexUtil.moveNext
Wend

Voilà ce que ça me donne :
<!--StartFragment -->
ajoutseance-Ajout d'une activité à un enfant
annulinscription-Annulation d'un enfant à une activité
inscription-Inscription d'un enfant
modifpersonne-Modifier les données d'un enfant
titrepage-Inscription à la Semaine de la Détente
titretableau-Gestion des Enfants

Et juste après ma page s'affiche correctement!
C'est super bizarre! d'autant plus que je ne comprends vraiment pas pourquoi il ne veut pas ajouter la clé (qui est dékà existante selon lui)!!!

Merci d'avance!

3 réponses

Chris_LaFouine Messages postés 109 Date d'inscription mardi 13 avril 2004 Statut Membre Dernière intervention 4 juin 2008
11 mars 2005 à 09:49
Ça y est je me suis autorépondu...
Dans un premier temps je me suis dit que la clé de "annulinscription" était trop longue, alors, je me suis fait un compteur que j'ai nommé "i" et j'ai mis les clés suivantes :
"coilludepoildejackpoulettedechiendepecheempaillé"&i
et finalement l'ajout fonctionnait, donc ça venait pas de la taille...

C'est alors que j'ai trouvé la solution, voila comment il a fallu faire :
set dictListeParam=Server.CreateObject("Scripting.Dictionary")
While NOT rsInfoIndexUtil.EOF
dictListeParam.Add cStr(rsInfoIndexUtil(0)),cStr(rsInfoIndexUtil(1) )
rsInfoIndexUtil.moveNext
Wend

Logique nan Et oui, j'ai dû convertir une chaine de caractère en chaine de caractère! ça c'est méga logique! C'est normal, moi j'ajoutais une chaine de caractère et ça fonctionnait pas, alors qu'en fait c'est une chaine de caractère qu'il attend...

Bref, si vous avez des problèmes dans ce style, essayez des trucs cons, ça fonctionne des fois!
3
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
11 mars 2005 à 15:41
je connais pas vbscript, mais

cStr(rsInfoIndexUtil(0))

Pour
moi, ca met en string l'element 0 de l'array rsinfo... apres je sais
pas comment celui ci est déclaré, mais il faut que rsinfo... soit
déclaré en tant qu'array de string, et non pas comme simple array
(d'object)



mais le principal c'est que tu ai trouvé une résolution ;)


<hr>
Cyril - MCP ASP.net
Webmaster de : Hoshimi.CodeS-SourceS.fr
0
Chris_LaFouine Messages postés 109 Date d'inscription mardi 13 avril 2004 Statut Membre Dernière intervention 4 juin 2008
11 mars 2005 à 16:05
Ce que tu appelles un tableau, c'est en fait un recordset, et la requete associée renvoie 2 champs qui sont du type VARCHAR donc des String!

D'ailleurs, je n'arrive pas à déclarer mes variables comme ça :
Dim strSQL As String

Dès que je lance une page qui contient le type d'objet, ça plante, même en mettant Option Explicit!

Du coup, je ne fais pas de déclarations!
0
Rejoignez-nous