Comment automatiser le remplissage d'un champ avec un autre (vb

Fermé
marine370 Messages postés 9 Date d'inscription jeudi 21 novembre 2013 Statut Membre Dernière intervention 7 janvier 2014 - 26 déc. 2013 à 15:28
marine370 Messages postés 9 Date d'inscription jeudi 21 novembre 2013 Statut Membre Dernière intervention 7 janvier 2014 - 7 janv. 2014 à 15:28
Bonjour,

j'ai trois tables contenant des informations propres à différentes personnes.
Je souhaiterais qu'en cliquant sur la région, il m'affiche automatiquement dans les champs de mon formulaire les informations correspondantes aux personnes (directeur et CAU) de la région concernée:
-Table DR : correspondant aux différentes régions
Eléments de la table : Id-DR (clé primaire);Id_directeur_DR;Id-CAU;DR
-Table Directeur DR : pour les directeurs
Eléments de la table : Id_directeur_DR(clé primaire);Nom_directeur DR;Prenom_directeur DR;DR
-Table CAU : pour les correspondants externes
Eléments de la table : Id-CAU(clé primaire);Nom_CAU;Prenom_CAU;DR

Il s'avère que je suis arrivée à le faire marcher pour les noms et prénoms des directeurs mais je ne parviens pas à rajouter dans marequete (cf code ci-dessous) le code équivalent pour les CAU. Comme je ne sais pas tout écrire en vb (comment relier marequete et marequete1 avec un and ou autre??)

Ci-dessous le code :

Private Sub Id_DR_Change()


'----------------Automatisation du remplissage des champs nom et prenom du directeur lors de la sélection de la DR dans la liste -----


'-----Déclaration des variables ---------
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim marequete As String
Dim marequete1 As String
Dim Region
On Error GoTo erreur

'----------Ouverture de la base de données ----------
Set db = DBEngine.OpenDatabase(Application.CurrentProject.Path & "\OSMOSE_V2.accdb")

'----------Récuperer le nom et le prénom du directeur DR -----------
'Mémoriser la DR selectionné par l'utilisateur
Region = Form![Id-DR]
marequete = "SELECT DISTINCT Nom_directeur_DR, Prenom_directeur_DR, [Table DR].[Id-DR] from [Table directeur DR] INNER JOIN [Table DR] ON [Table directeur DR].Id_directeur_DR = [Table DR].Id_directeur_DR WHERE [Table DR].[Id-DR]= " & Region & ";"
marequete1 = "SELECT DISTINCT Nom_CAU, Prenom_CAU, [Table DR].[Id-DR] from [Table CAU] INNER JOIN [Table DR] ON [Table CAU].Id_CAU = [Table DR].Id_CAU WHERE [Table DR].[Id-DR]= " & Region & ";"
'Ouvrir la requete
Set rs = CurrentDb.OpenRecordset(marequete, dbOpenSnapshot)
Set rs = CurrentDb.OpenRecordset(marequete1, dbOpenSnapshot)
'si la requete renvoie un résultat
If (Not (rs.EOF)) Then
'remplissage automatique des champs Nom_directeur_DR et Prenom_directeur_DR
Nom_directeur_DR = rs!Nom_directeur_DR
Prenom_directeur_DR = rs!Prenom_directeur_DR
Nom_CAU = rs!CAU
Prenom_CAU = rs!Prenom_CAU
Else
MsgBox "Aucun directeur dans notre base n'est associé à la DR selectionnée", vbCritical, "Erreur"
End If

'----------Fermeture requete et base de données -------
rs.Close
db.Close


'-------------Fonctions ---------------
Sortie:
Set db = Nothing
Exit Sub
erreur:
MsgBox err.Description, vbExclamation, err.Number
Resume Sortie

End Sub

JE VOUS REMERCIE PAR AVANCE POUR VOTRE AIDE!!!

7 réponses

Thorak83 Messages postés 1051 Date d'inscription jeudi 20 juin 2013 Statut Membre Dernière intervention 22 décembre 2017 156
Modifié par Thorak83 le 2/01/2014 à 15:50
Bonjour,
la réponse est de ne faire qu'une seule requête comme cela avec 2 jointures :
SELECT DISTINCT 
Nom_directeur_DR,
Prenom_directeur_DR,
Nom_CAU,
Prenom_CAU,
[Table DR].[Id-DR]
FROM [Table directeur DR]
INNER JOIN [Table DR] ON [Table directeur DR].Id_directeur_DR = [Table DR].Id_directeur_DR
INNER JOIN [Table CAU]] ON [Table CAU].Id_CAU = [Table DR].Id_directeur_DR
WHERE [Table DR].[Id-DR]= " & Region & "

Cordialement
0
marine370 Messages postés 9 Date d'inscription jeudi 21 novembre 2013 Statut Membre Dernière intervention 7 janvier 2014
3 janv. 2014 à 11:16
Bonjour,

je vous remercie pour votre aide mais j'ai un souci d'opérateur absent :
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim marequete As String
Dim Region
On Error GoTo erreur

'----------Ouverture de la base de données ----------
Set db = DBEngine.OpenDatabase(Application.CurrentProject.Path & "\OSMOSE_V2.accdb")

'----------Récuperer le nom et le prénom de l'adjoint du BRIPS -----------
'Mémoriser la DR selectionnée par l'utilisateur
Region = Form![Id-DR]
marequete = "SELECT DISTINCT Nom_directeur_DR, Prenom_directeur_DR, Nom_CAU, Prenom_CAU, [Table DR].[Id-DR] FROM [Table directeur DR] INNER JOIN [Table DR] ON [Table directeur DR].Id_directeur_DR = [Table DR].Id_directeur_DR INNER JOIN [Table CAU] ON [Table CAU].Id_CAU = [Table DR].Id_directeur_DR WHERE [Table DR].[Id-DR]= " & Region & ";"
'Ouvrir la requete
Set rs = CurrentDb.OpenRecordset(marequete, dbOpenSnapshot)
'si la requete renvoie un résultat
If (Not (rs.EOF)) Then
'remplissage automatique des champs Nom_directeur_DR et Prenom_directeur_DR
Nom_directeur_DR = rs!Nom_directeur_DR
Prenom_directeur_DR = rs!Prenom_directeur_DR
Nom_CAU = rs!Nom_CAU
Prenom_CAU = rs!Prenom_CAU
Else
MsgBox "Aucun directeur ou CAU dans notre base n'est associé à la DR selectionnée", vbCritical, "Erreur"
End If

J'AI supposé que dans la ligne suivante il y avait un ] en trop après Table CAU :
INNER JOIN [Table CAU]] ON [Table CAU].Id_CAU = [Table DR].Id_directeur_DR
mais je dois avoir un autre souci de guillemet ou virgule?

Merci encore pour le coup de pouce!
0
Thorak83 Messages postés 1051 Date d'inscription jeudi 20 juin 2013 Statut Membre Dernière intervention 22 décembre 2017 156
3 janv. 2014 à 11:35
Essayez déjà comme cela dans le WHERE

WHERE [Table DR].[Id-DR]= " & Region
0
marine370 Messages postés 9 Date d'inscription jeudi 21 novembre 2013 Statut Membre Dernière intervention 7 janvier 2014
3 janv. 2014 à 13:59
access me met un message d'erreur disant : erreur de compilation, erreur de syntaxe.
Dans le premier code que je vous ai mis, cela marchait très bien avec seulement le nom du directeur et le prénom du directeur... pas celui du CAU...
0
marine370 Messages postés 9 Date d'inscription jeudi 21 novembre 2013 Statut Membre Dernière intervention 7 janvier 2014
3 janv. 2014 à 14:01
en fait j'ai exactement le même message d'erreur avec ce que vous me proposez que précédemment...
0
castours Messages postés 2955 Date d'inscription lundi 18 septembre 2006 Statut Membre Dernière intervention 31 août 2019 217
3 janv. 2014 à 17:34
Bonjour
Comment sont les relations?
Mets ta base avec Ci_joint.com
0

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

Posez votre question
castours Messages postés 2955 Date d'inscription lundi 18 septembre 2006 Statut Membre Dernière intervention 31 août 2019 217
3 janv. 2014 à 17:53
Bonjour
https://www.cjoint.com/?DAdrYy5gnI0
Un exemple avec les tables données.
J'ai fait relations + formulaire
Est ce principe que tu veux?
0
marine370 Messages postés 9 Date d'inscription jeudi 21 novembre 2013 Statut Membre Dernière intervention 7 janvier 2014
6 janv. 2014 à 08:59
Bonjour,

ma base est trop grande pour que je puisse la mettre sur Ci_joint.com.
aurais-tu une adresse mail pour que je puisse te l'envoyer par poste restante?
Mes relations :
Table directeur vers Table DR : 1 vers infini
Table CAU vers Table DR : 1 vers infini
Sachant que mon Id-directeur et mon Id-CAU sont les clés secondaires de la table DR.
Je voudrais en fait qu'en sélectionnant la DR (région), il m'affiche automatiquement dans le formulaire les noms, prénoms des directeurs et CAU correspondants.
En fait par rapport à ce que j'ai écrit au-dessus, mon code marche quand je mets uniquement les informations relatives aux directeurs mais je ne parviens pas à faire la double jointure me permettant d'associer le CAU...

Je te remercie pour ton aide.
0
marine370 Messages postés 9 Date d'inscription jeudi 21 novembre 2013 Statut Membre Dernière intervention 7 janvier 2014
6 janv. 2014 à 09:00
Précision supplémentaire : on a un seul CAU et directeur par DR...
0
castours Messages postés 2955 Date d'inscription lundi 18 septembre 2006 Statut Membre Dernière intervention 31 août 2019 217
6 janv. 2014 à 13:54
Bonjour
As tu regardé l'exemple envoyé?
0
castours Messages postés 2955 Date d'inscription lundi 18 septembre 2006 Statut Membre Dernière intervention 31 août 2019 217
6 janv. 2014 à 17:41
#""#satrob@club-internet.fr##
tu otes #"au extremités
0
marine370 Messages postés 9 Date d'inscription jeudi 21 novembre 2013 Statut Membre Dernière intervention 7 janvier 2014
7 janv. 2014 à 14:29
J'ai bien regardé ce que tu m'as envoyé mais ce n'est vraiment ce dont j'ai besoin.
Quand tu me dis d'enlever #" aux extrémités, de quoi parles-tu exactement?
0
castours Messages postés 2955 Date d'inscription lundi 18 septembre 2006 Statut Membre Dernière intervention 31 août 2019 217
7 janv. 2014 à 14:34
bonjour
sur l'adresse email
0
marine370 Messages postés 9 Date d'inscription jeudi 21 novembre 2013 Statut Membre Dernière intervention 7 janvier 2014
7 janv. 2014 à 15:28
ok je viens de te l'envoyer, c'est sur le Avant MAJ du formulaire demande d'achat modification...

Merci beaucoup et hesites pas si tu as besoin de davantage d'éléments.
0