Probleme d'homonyme avec combobox et access

cliclic1234 Messages postés 19 Date d'inscription vendredi 18 mars 2005 Statut Membre Dernière intervention 5 septembre 2005 - 1 sept. 2005 à 23:47
Zlub Messages postés 809 Date d'inscription mercredi 11 octobre 2000 Statut Membre Dernière intervention 29 septembre 2010 - 5 sept. 2005 à 00:26
j'ai une base de donnee ou j'enregistre nom de client et numero de client et l'adresse
je fais le choix avec une combo box et j'affiche le resultat dans une list box
mais j'ai un souci en cas d'homonyme
il ne me remonte dans la list box les 2 numero de client
comment faire pour n'obtenir en cas d'homonyme que les informations numero client et adresse lie a l'enregistrement ou jai clique
voici mon code
sql "SELECT * FROM bseclient WHERE cli'" & Replace(Combo1.Text, "'", "''") & "'"
Set rs = db.OpenRecordset(sql, dbOpenDynaset)
List1.Clear
For i = 1 To rs.RecordCount

List1.AddItem (rs.Fields("numclient"))
numeroclient = (rs.Fields("numclient"))
rs.MoveNext
Next

en supprimant la boucle il ne me reprend toujours que le premier

merci d'avance de votre aide

5 réponses

PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
2 sept. 2005 à 00:00
il ne doit pas y avoir de doublon sur un numéro servant d'identifiant.
a moins d'avoir mal compris ton problème, sinon, il n'a pas lieu d'exister !
(pas très français comme phrase çà...)
PCPT
0
choupi64 Messages postés 21 Date d'inscription mardi 20 janvier 2004 Statut Membre Dernière intervention 2 septembre 2005
2 sept. 2005 à 09:27
D'après ce que j'ai compris le probleme d'homonymie et sur le nom du client et non son numero d'enregistrement.
0
Zlub Messages postés 809 Date d'inscription mercredi 11 octobre 2000 Statut Membre Dernière intervention 29 septembre 2010 8
2 sept. 2005 à 15:33
Salut cliclic1234,

Tu peux affecter l'identifiant dans l'itemData, je m'explique : lors du chargement des valeurs depuis la base



cbo.AddItem rs("NomClient").Value

cbo.ItemData(cbo.ListCount-1) = Val(rs("IdClient"))



du coups des que l'utilisateur selectionne un client, tu as direct acces à l'id de ce dernier



Debug.Print get_itemdata(NomDeTaCombo)




avec



Public Function get_itemdata(cbo As ComboBox) As Integer: get_itemdata = cbo.ItemData(cbo.ListIndex): End Function



Public Sub select_from_itemdata(cbo As ComboBox, ByVal id As Integer)

Dim i As Integer

Dim Max As Integer

Max = cbo.ListCount

For i = 0 To Max

If cbo.ItemData(i) = id Then

cbo.ListIndex = i

Exit Sub

End If

Next i

cbo.ListIndex = 0

End Sub


Comme ça tu as bien le bon Identifiant associé au bon client ...
Les données sont donc cohérentes, mais ça déplace le probleme d'homonyme
... je sais pas si ça te vas ...



Tu peux empecher les homonymes avant d'inserer en base, en vérifiant
qu'aucun client n'existe sous ce nom là... ou alors ajouter une info en
plus dans la combo: par exemple, le prénom du client ...


++

Zlub


<hr size="2" width="100%">
0
cliclic1234 Messages postés 19 Date d'inscription vendredi 18 mars 2005 Statut Membre Dernière intervention 5 septembre 2005
5 sept. 2005 à 00:15
Merci de votre aide
mais cela ne marche pas
j'ai deja fait l'interdiction de creer un client qui existe mais il s'agit de reimplanter une base existante
n'y as t'il pas un moyen plus simple de recuperer le numero de client lie au champ ou l'on clique
Merci encore de votre aide
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Zlub Messages postés 809 Date d'inscription mercredi 11 octobre 2000 Statut Membre Dernière intervention 29 septembre 2010 8
5 sept. 2005 à 00:26
Salut cliclic1234,


Plus simple ? je trouve pas ça complexe : 3 lignes pour résoudre ton probleme ...



J'ai pas tout compris à ton dernier post : reimplanter une base existante ???





Si ta base n'as pas de doublons, et que tu veux stocker les champs dans
une combo : lors du chargement des valeurs dans la combo (nommée cbo) -
si t'as une table Clients avec idClient et NomClient :



cbo.AddItem rs("NomClient").Value
cbo.ItemData(cbo.ListCount-1) = Val(rs("IdClient"))




et lors du click pour avoir l'id



id = get_itemdata(cbo)



L'utilisation de l'itemData permettant de stocker l'id de la personne,
te permettras d'économiser une requête SQl de selection (celle pour
récupérer l'id du client) ...



la fonction select_from_itemdata c'est du Bonus ... au cas où mais pas directement liée à ton probleme.





Bref, cette solution fonctionne tres bien ... maintenant, si ça ne
répond pas à ton probleme, essais de m'expliquer un peu plus
longuement, se que tu veux faire, et où ça pose problème ...




++

Zlub
0
Rejoignez-nous