Pockett
Messages postés10Date d'inscriptionvendredi 10 décembre 2004StatutMembreDernière intervention18 janvier 2005
-
17 janv. 2005 à 22:35
zeunz
Messages postés200Date d'inscriptionjeudi 26 février 2004StatutMembreDernière intervention30 juin 2008
-
18 janv. 2005 à 12:40
Bonjour ,
Pour afficher la ville en fonction du CP,j'essaie d'utiliser ce code:
Private Sub CodePostal_AfterUpdate()
Dim rst As Recordset
Set rst = CurrentDb.OpenRecordset("T_CodesPostaux")
rst.Find "CodePostal='" & Me.CodePostal & "'"
If rst.NoMatch Then
MsgBox "ce code postal n'existe pas !!"
Else
Me.Ville = rst.Fields(1)
End If
rst = Nothing
End Sub
Mais ca m'affiche l'erreur suivante: Erreur de compilation, Membre de methode ou de donnees introuvables. Le pb semble venir de la partie Me.CodePostal pourtant c'est bien le nom du controle.
Qqn peut-il corriger mon erreur ?
'Paramétrage du curseur
CN.CursorLocation = adUseClient
'Ouverture de la base de données
CN.Open (Connect)
'Recherche des données
With RecordSet
'Ouverture de la table
.Open Table, CN, adOpenDynamic, adLockOptimistic
'Recherche des données
.Find "CodePostal =" & ChampID '<---------
me.caption= ![ville]
'Fermeture de la table
RecordSet.Close
End With
je pense que tu as une erreur a l'endroit ou tu as mis "find"
faut bien mettre "codepostal =" je pense que l'espace entre "find" et "=" est obligatoire
fais un essai car je ss pas sur de ce que je te dis.
a+ bon courage
zeunz
Pockett
Messages postés10Date d'inscriptionvendredi 10 décembre 2004StatutMembreDernière intervention18 janvier 2005 18 janv. 2005 à 11:39
Merci de ta réponse . Effectivement l'erreur vient de find, je ne peux pas le mettre seul mais les propositions présentées ne me conviennent pas.
Ton code est assez complexe, est-ce q qqn aurait un code plus simple me permettant d'afficher la ville d'apres la valeur du code postal
J'ai essayé qq formules simples, l'inconvénient pour celle qui fctionne c'est qu'elle ne m'affiche que la premiere ville associée au cp alors q pfs il y en a plusieurs.
Pockett
Messages postés10Date d'inscriptionvendredi 10 décembre 2004StatutMembreDernière intervention18 janvier 2005 18 janv. 2005 à 11:44
En meme tps lol, comme tu peux le voir dans mon nouveau message, je n'ai pas avancé, sniff.
Stt que je ne suis pas du tt douée en vba , je ne cherche pas non plus à le devenir mais je voudrais pouvoir faire en sorte que ma bdd sur access soit correcte.
HHHHEEEELLLPPP please lol, stt que pour les gens qui s'y connaissent je pense que le code doit etre assez simple.
zeunz
Messages postés200Date d'inscriptionjeudi 26 février 2004StatutMembreDernière intervention30 juin 2008 18 janv. 2005 à 11:52
en fait d'apres ce ke je viens de comprendre, tu voudsrai les noms de villes correspondant au code postal sélectionné, et il se pourrait qu'il y ait plusieurs solutions. est ce bien ca?
zeunz
Messages postés200Date d'inscriptionjeudi 26 février 2004StatutMembreDernière intervention30 juin 2008 18 janv. 2005 à 12:09
'faudra rajouter une listbox
'et RS= recordset
'Vidage de la liste
ListBox.Clear
'Chargement de la ListView
With RS
'Ouverture de la table
.Open "Ville", CN, adOpenDynamic, adLockReadOnly 'adLockReadOnly = ouverture en lecture
'Vérification du nombre d'enregistrement (si le nbre>0)
If .EOF = True Then GoTo Suite
'Recherche des données
.MoveFirst
Do
'Vérification des données
if ![CodePostal]=MonCodePostalChoisi then
ListBox.AddItem ![Ville]
'La, on met un itemdata (ms tu n'es pas oblige de le mettre)
ListBox.ItemData(ListBox.NewIndex) = ![idCodePostal]
end if
'Enregistrement suivant
If .EOF = False Then .MoveNext
Loop Until .EOF = True
Suite:
'Fermeture de la table
RS.Close
End With
'Ce code ouvrira dc ta table, vérifira si elle possede au moin 1 enregistrement (sinon elle 'passe directement a la fermeture), et fera une boucle de lecture où elle fera une comparaison 'avec les données et les ajoutera ds la ListBox.
Pockett
Messages postés10Date d'inscriptionvendredi 10 décembre 2004StatutMembreDernière intervention18 janvier 2005 18 janv. 2005 à 12:10
C'est cool si tu peux me trouver un code. Tu t'y connais sur access?
J'ai un formulaire "F_societes" avec un controle zone de texte "CodePostal" et un controle liste deroulante "Ville". J'ai egalement une table "T_CodesPostaux" regroupant villes et codes postaux.
Pockett
Messages postés10Date d'inscriptionvendredi 10 décembre 2004StatutMembreDernière intervention18 janvier 2005 18 janv. 2005 à 12:18
mdr en fait j'hesite lol je ne sais pas, entre ton premier code et ton second lequel est le plus simple!!!
Je savais que le vba ce n'était pas simple mais pour une tte petite application comme jeve faire sur access il faut un aussi gros code .
Je vais aller l'essayer lol ma base de données parait ridicule à coté de ton code.
zeunz
Messages postés200Date d'inscriptionjeudi 26 février 2004StatutMembreDernière intervention30 juin 2008 18 janv. 2005 à 12:18
ben regarde en haut c'est le code ke je t'ai mis. moi avec access je n'utilise pas les formulaires. j'ai simplement des tables avec lesquelles je fais mes recherches et vb m'affiche mes infos.
tu remplce dc ds le code ci dessus "ville " par "T_CodesPostaux" et ce qu'il y a entre "[]" par les noms des champs ke tu as mis.
zeunz
Messages postés200Date d'inscriptionjeudi 26 février 2004StatutMembreDernière intervention30 juin 2008 18 janv. 2005 à 12:40
Private Sub CodePostal_AfterUpdate()
Dim rst As Recordset
Set rst = CurrentDb.OpenRecordset("T_CodesPostaux")
if rst!CodePostal= me.CodePostal then
listbox.additem rst!CodePostal
end if
rst.movefirst
rst.close