Remplir combobox

simowallen - 2 juil. 2013 à 14:09
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 - 2 juil. 2013 à 19:58
bonjour tout le monde
j'ai une form qui se compose de 4 zone text ( pour test ) et 4 combobox qui sont relier l'un avec l'autre ( combo1 remplisse la combo2 ,combo2>>combo3 .... ) j'ai fait la le code suivante pour combo1 :


Private Sub Com0_Click()

Set rs = New ADODB.Recordset
rs.Open "select * from final", cn, 1, 2
Do While Not rs.EOF
If T0 = rs.Fields(0) Then
Dim i As Integer, X As Integer
For i = 0 To Combo2.ListCount - 1
For X = 0 To Combo1.ListCount - 1
If (Combo2.List(i) = combo2.List(X)) And X <> i Then
Combo2.RemoveItem (i)
End If
Next X
Next i

Combo2.AddItem rs.Fields(1)

End If
rs.MoveNext
Loop
end sub

mais j'ai trouvé le problème suivant : c'est que toujour le dernier enregistrement se repete 2 fois exmpl :
fournisseur 1
fournisseur 2
fournisseur 3
fournisseur 3


et j'ai rien compris comment résoudre ce problème
NB : final est une requette
merci infiniment pour vos aides

1 réponse

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
2 juil. 2013 à 19:58
Salut et bienvenu

La prochaine fois, utilise la coloration syntaxique (3ème icone à droite) pour afficher du code : Plus facile à relire et conserve les espaces en tête de ligne.

Que représente T0 ?
A quoi te servent les tests sur la Combo (avec le Remove) puisqu'ils n'ont aucun lien avec ta requète ?
Ces tests ne servent qu'à supprimer les doublons : Pourquoi les refaire à chaque item de ta table ?
Il vaudrait mieux vérifier si le champ de ta table existe déjà dans ta Combo pour savoir s'il est utile de l'ajouter.
En y regardant de plus près, j'ai trouvé ton bug :
'i' représente un index dans Combo2
'X' représente un index dans Combo1
Or, dans la ligne de comparaison qui suit (le If), tu compares les Items de Combo2 uniquement !
(ou alors je n'ai rien compris à ce que tu tentes de faire)
Alors deux solutions :
- Soit tu as la chance que Combo2 et Combo1 possèdent le même nombre d'Items
- Soit tu as utilisé un affreux "On Error Resume Next" qui te masque le problème --> A BANNIR DE LA PROGRAMMATION

'final' n'est pas une requète : c'est une table.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on le partage (Socrate)
0
Rejoignez-nous