Bonjour,

Je développe depuis 3semaines environ en ASP dans le cadre de mon stage. Et je souhaiterai faire un petit moteur de recherche pour un site dans la rubrique offre d'emploi. Pour cela j'utilise des Dictionary:
- Il y a un champs "poste" dans le formulaire de recherche et si celui-ci n'est pas vide alors je commence à créer un dictionary en listant les offres.
Je remplis mon dictionary de la manière suivante:
key= idOffre <--> value= array de mots supérieurs à 4 lettres
J'espère avoir été explicite.
Donc voici mon code qui fait le traitement:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
 
sql="SELECT NumOff,IntituleOff FROM OFFRES WHERE Visible=1 "&where&" ORDER BY DateOff  DESC"
'Principe: On va recupérer tous les mots envoyés de longueur > à 4.
' Puis on recupérer tous les tuples de la base de données et on stocke dans un tableau tout les mots en faisant correspondre son id
' Par exemple si le tuple d'id=6 et id=4 contiennent le mot "reseaux" alors on crée un tableau (4,6) afin de construire dynamique la close WHERE
' de la requéte SQL par la suite.
 
if(Request.Form("poste")<>"") then
 
    Dim oDict,aKeys,rs
 
    Set oDict = Server.CreateObject("Scripting.Dictionary")
    oDict.CompareMode =  VBTextCompare
    Set rs = Conn.Execute(sql)
 
    where2=""
 
    'On ajoute dans un dictionnaire qui a pour clé l'id de l'offre et pour valeur une liste de mots de l'intitulé
    While Not rs.EOF
        Dim tmp,wordArray
        tmp=Trim(rs("IntituleOff"))
        wordArray=Split(tmp," ")
        'Affichage
        Response.Write rs("NumOff")&" == >"
        writeArray(wordArray)
 
        if oDict.Exists(rs("NumOff")) then
               oDict.Remove(rs("NumOff"))
        end if
        oDict.Add rs("NumOff"),wordArray
        rs.MoveNext
    wend
    ' Ajout à la main juste pour le test
    oDict.Add "100",Array("momo","jojo","nono")
 
    Response.write "<br /> Yo momo ! <br />"
    'aKeys = oDict.Keys
    'Set oDict = Nothing
 
    'For i = 0 To Ubound(aKeys)
      'Response.Write aKeys(i) & "<br>"
    'Next
 
 
    aItems = oDict.Items
    'Set oDict = Nothing
 
    For i = 0 To Ubound(aItems)
       writeArray(aItems(i))
    Next
...
Et voici l'affichage

28 == >étudiant -l'autre -test -1 -2 -3 -@à -" -'" -
26 == >654654564 -
21 == >sauveteur -de -baleine -
20 == >dfsdfsf -
18 == >Stage -informatique -
17 == >Technicien -réseaux -
15 == >qsdqsdqsd -

Yo momo !
qsdqsdqsd -
momo -jojo -nono -
alors que je suis censé attendre

28 == >étudiant -l'autre -test -1 -2 -3 -@à -" -'" -
26 == >654654564 -
21 == >sauveteur -de -baleine -
20 == >dfsdfsf -
18 == >Stage -informatique -
17 == >Technicien -réseaux -
15 == >qsdqsdqsd -

Yo momo !

étudiant -l'autre -test -1 -2 -3 -@à -" -'" -
654654564 -
sauveteur -de -baleine -
dfsdfsf -
Stage -informatique -
Technicien -réseaux -
qsdqsdqsd -
momo -jojo -nono -
J'ai l'impression qu'il écrase à chaque fois la valeur et de plus j'ai le test

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
if oDict.Exists(rs("NumOff")) then
               oDict.Remove(rs("NumOff"))
        end if
sinon j'avoue une erreur comme quoi la clé était déjà présente dans la Map , enfin Dictionary.



Je vous remercie d'avance, car cela commence à faire 2 demi-journée que je bloque dessus et que je ne comprends vraiment pas pourquoi cela ne marche.

Please