Jongler entre deux tables pour mettre les données de l'une dans l'autre via le f

CYCY07 Messages postés 67 Date d'inscription jeudi 19 mai 2011 Statut Membre Dernière intervention 22 mai 2006 - 19 août 2005 à 18:12
aegis_10 Messages postés 3 Date d'inscription vendredi 5 août 2005 Statut Membre Dernière intervention 20 août 2005 - 20 août 2005 à 12:48
j'affiche dans une combobox la localité où on a le choix mais dans les deux text box doivent s'afficher localite et pays selon le choix dans la combo
J'ai employé le findfirst qu'on m'a conseillé sur une question posée qq heures plus tot...
Voici le détail:
1. j'ai deux tables : TLocalite et TEtudiant
2. dans la feuille créée en VB reprenant la saisie des étudiants je voudrais pouvoir faire le choix du code postal ainsi que l'ajout de ce code s'il ne parait pas dans la combo (jusque là pas dur)
3. dans la sélection de la combo, j'ai deux textbox localité et pays, en choisissant le code postal dans la combo, je voudrais que les données de la table localité s'ajouent automatiquement dans les textbox (càd dans la table TEtudiant)

On m'a conseillé soit:
* d'effectuer une requête en access puis de taper du code
* emploi du findfirst

voici le code dans la combo :

Private Sub Combocodepostal_Change()
DataLocalit.Recordset.FindFirst "NLocalite ='" + Combocodepostal.Text + "'"
DataLocalit.Recordset.FindFirst "Pays ='" + Combocodepostal.Text + "'"
End Sub

jusque là ça marche, mais en exécutant le projet, il me laisse toujours au meme enregistrement lorsque je sélectionne le code dans la combo

J'ai du oublier qqch mais est ce que qqun pourrait m'aider car je m'arrache les cheveux depuis tantot et je n'avance pas des masses
merci d'avance
Cycy

6 réponses

aegis_10 Messages postés 3 Date d'inscription vendredi 5 août 2005 Statut Membre Dernière intervention 20 août 2005
19 août 2005 à 22:57
Bonsoir,



tu pourrais essayer plutôt que de chercher la première valeur
correspondante (FindFirst) dans la table, de filtrer ta table en ne
gardant que l'enregistrement souhaité, résultat que tu injectes dans un
recorset :



ex :

dim db as database, rs as recordset

dim sql as string

set db = currentdb

'ici tu crée ta procédure sql de filtre en utilisant la valeur de ta combobox :

sql = "SELECT * FROM Tlocalite WHERE (" & chr(39) & combocodepostal.text & chr(39) & ");"

set rs = db.openrecordset(sql)

If rs.EOF = True Then

msgbox ("pas d'enregistrement")

else

'après je ne suis pas sûr d'avoir bien compris ce que tu voulais faire : afficher la valeur de la localité dans le texbox ?

localitetextbox.Text = rs.Fields("nom_localite") 'nom-localite à remplacer par le nom du champ de localite de ta table Tlocalite

End If

rs.Close



En espérant t'avoir aidé,

Cédric
0
aegis_10 Messages postés 3 Date d'inscription vendredi 5 août 2005 Statut Membre Dernière intervention 20 août 2005
19 août 2005 à 23:04
J'ai été un peu vite avec la chaîne SQL, je la réécris, désolé...

nom_localite = nom du champ de localite de ta table Tlocalite



sql = "SELECT * FROM Tlocalite WHERE (nom_localite=" & chr(39) & combocodepostal.text & chr(39) & ");"
0
CYCY07 Messages postés 67 Date d'inscription jeudi 19 mai 2011 Statut Membre Dernière intervention 22 mai 2006
19 août 2005 à 23:20
Voilà en fait je voudrais qu'en sélectionnant dans une combobox le code postal, les champs localités et pays s'affichent directement.
Code postal : Choix dans combobox genre 59 000
les textbox localité et pays se remplissent automatiquement : Lille France
Merci c'est cool je regarderai plus en détail ton code demain c'est sympa et je te dirai ce qu'il en est merci bonne nuit

Le must : ce sont les champs de la table TLocalité qui doivent se rajouter dans ma dbgrid une fois encodé... Voilà où je me casse le crâne...

et oui je ne cherche pas le simple pourtant je suis débutante en vb
0
CYCY07 Messages postés 67 Date d'inscription jeudi 19 mai 2011 Statut Membre Dernière intervention 22 mai 2006
19 août 2005 à 23:25
Voilà en fait je voudrais qu'en sélectionnant dans une combobox le code postal, les champs localités et pays s'affichent directement.
Code postal : Choix dans combobox genre 59 000
les textbox localité et pays se remplissent automatiquement : Lille France
Merci c'est cool je regarderai plus en détail ton code demain c'est sympa et je te dirai ce qu'il en est merci bonne nuit

Le must : ce sont les champs de la table TLocalité qui doivent se rajouter dans ma dbgrid une fois encodé... Voilà où je me casse le crâne...

Thanks
et oui je ne cherche pas le simple pourtant je suis débutante en vb mais c'est un projet à réaliser pour mes cours du soir et le prof n'attend pas moins...
0

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

Posez votre question
CYCY07 Messages postés 67 Date d'inscription jeudi 19 mai 2011 Statut Membre Dernière intervention 22 mai 2006
20 août 2005 à 10:09
Salut, j'ai essayé le code mais hélas ça ne va pas... Je commence à désespérer là... N'aurais tu pas une autre idée par hazard??
Je t'en remercie d'avance
0
aegis_10 Messages postés 3 Date d'inscription vendredi 5 août 2005 Statut Membre Dernière intervention 20 août 2005
20 août 2005 à 12:48
Salut,



bon je viens de le faire en utilisant un sous-formulaire :



Private Sub combocodepostal_Change()

Dim db As database

Dim Qdfs As QueryDef

Dim sql As String



Dim var_codepostal As String



var_codepostal = combocodepostal.Text



Set db = CurrentDb

If var_codepostal <> "" Then

'ici on construit la requête à l'aide de SQL

sql = "SELECT * FROM Tlocalite
WHERE (((Tlocalite.codepostal)) = " & Chr(39) & var_codepostal
& Chr(39) & ");"

With db

For Each Qdfs In .QueryDefs

' on vérifie que l'objet reqTempLocalite n'existe pas ; si elle existe déjà, on la supprime

If Qdfs.Name = "reqTempLocalite" Then

.QueryDefs.Delete Qdfs.Name

End If

Next Qdfs

'on crée la requête nommée "reqTempLocalite" avec la chaîne sql

Set Qdfs = .CreateQueryDef("reqTempLocalite", sql)

Me.sousformLoc.SourceObject = "Requête.reqTempLocalite"

.Close

End With

End If

End Sub



ce code utilise les objets querydef de DAO, il faut donc que tu ajoutes
ce composant : dans Outil/references, tu coches Microsoft DAO 3.5 ou
sup.

puis dans ton formulaire, tu dessines un sous-formulaire que j'ai nommé
sousformLoc dans lequel s'affichera la requête qui aura été créée suite
au changement de code postal. Il faut bien sûr supprimer la requête
nommée "reqTempLocalite" sinon lorsque tu choisiras une 2e valeur de
code postal, il y aura erreur : la requête "reqTempLocalite" existe
déjà ; c'est pourquoi je commence par la supprimersi elle existe.



Si cela ne marche pas, c'est qu'il faut ajuster en fonction de tes
tables, des types de champs etc... par exemple, dans mon code, j'ai
considéré le codepostal comme une valeur string, si c'est un numérique,
il te faudra modifier le type de var_codepostal.



A +
0
Rejoignez-nous