Boucle Do While avec doublons - Merci de votre aide

Résolu
kallahan Messages postés 3 Date d'inscription jeudi 22 juillet 2004 Statut Membre Dernière intervention 26 octobre 2004 - 25 oct. 2004 à 09:45
kallahan Messages postés 3 Date d'inscription jeudi 22 juillet 2004 Statut Membre Dernière intervention 26 octobre 2004 - 26 oct. 2004 à 09:00
Bonjour,

Etant donné que le message http://www.aspfr.com/forum.v2.aspx?ID=85187 n'est pas visible, je vous demande votre aide.

Je fais une requete dans une base sql server 2000 d'établissements correspondants à des critères de recherche.
Cependant il y a des doublons inévitables mais qui ne se suivent pas dans la liste.
Je souhaite donc ne pas afficher un établissement déjà listé.

J'ai essayé des choses du genre :

Dim l_a_etab_affiche()
Redim l_a_etab_affiche(l_r_rs.recordcount) 'l_r_rs est mon recordset
l_i_compteur = 0
Do While Not l_r_rs.Eof
l_b_exist_deja = False
For z = 0 To Ubound(l_a_etab_affiche)
If Cint(l_a_etab_affiche(z)) = Cint(l_r_rs("code_etab")) Then
l_b_exist_deja = True
Exit For
End If
Next
If Not l_b_exist_deja Then
l_a_etab_affiche(l_i_compteur) = Cint(l_r_rs("code_etab"))
' puis j'affiche mon établissement
End If
l_r_rs.Movenext
l_i_compteur = l_i_compteur + 1
Loop

Mais ça ne fonctionne pas...
Quelqu'un aurait-il une idée ? ou un lien où je peux trouver une réponse ?
Merci pour votre aide.

2 réponses

kallahan Messages postés 3 Date d'inscription jeudi 22 juillet 2004 Statut Membre Dernière intervention 26 octobre 2004
26 oct. 2004 à 09:00
Le problème c'est que des établissements différents peuvent avoir le même nom.
J'ai trouvé une function qui utilise l'objet dictionary et permet de supprimer les doublons : http://www.asp-php.net/scripts/asp-php/functions_array.php?page=3
3
cboulas Messages postés 2641 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 8 janvier 2014 16
25 oct. 2004 à 19:31
Si ta liste d'établissement n'est pas trop longue, tu peux la stockée dans un tableau, ou dans une variable avec des ";" qui sépare les noms ou alors te faire un control listbox qui contient tous les nom d'établissement mais là c'est un peu trop lourd, donc j'opterais surement pour le tableau ou la variable string.

Ensuite dans ta boucle après chaque RecordSet.movenext tu test le nom de l'établissement et le recherche dans ton tableau ou variable, et s'il est présent tu refait .movenext

exemple rapide :
Dim toto as string

if instr(toto,rs.fields("nom_etablissement"))<>0 then
rs.movenext
else
.
.
.    Ton code habituel
.
.
end if


Chris...
Web : Firstruner - eMail : [mailto:support@firstruner.com Support]
0
Rejoignez-nous