|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : septembre 2008 Messages : 14 ![]() |
Bonjour à tous,
Je travaille sur base Access2003 nommée "Examens" qui comporte entre autres une table Candidat dont les champs sont Nom, Prénom, NAS, Adresse_1, Adresse_2 Une base similaire est utilisée par d'autres avec des données plus à jour que les miennes. Je souhaiterais pour les candidats dont le NAS est identique dans les 2 tables être capable de mettre à jour uniquement les champs Adresse_1 et Adresse_2 de ma table Candidat aves les données de la table Candidat de la base la plus récente afin de ne pas perdre les autres infos qui sont présentes dans ma table de destination. Pour encore faciliter le tout, il faudrait que si un candidat n'est pas présent dans ma base de destination celui-ci soit ajouté avec les données présentes dans l'ensemble des champs de la table source. Personnellement, mais connaissances ne me permettent plus de répondre à mon besoin, j'en appelle donc à votre aide! Merci à ceux qui me réponderont! |
|
|
00
|
|
|
#2 |
|
Expert Confirmé
![]() Inscription : juillet 2007 Messages : 2 176 ![]() |
Bonjour LIMITE,
Il te faudra deux requêtes : une de type "mise à jour" (UPDATE), l'autre de type "ajout" (INSERT). D'après ce que j'ai compris, le champ "NAS" est la clé primaire de tes deux tables. Soit la base Examens_LIMITE, ta base, et la base Examens_AJour, la base plus récente. Dans Examens_LIMITE, créer une table liée sur Candidat de Examens_AJour. Via l'assistant, en type de requête "mise à jour" : - ajouter Candidat de Examens_LIMITE (FROM) ; - ajouter Candidat de Examens_AJour (FROM) ; - lier Candidat de Examens_LIMITE à Candidat de Examens_AJour via NAS (JOIN) ; - ajouter le champ Adresse_1 de Candidat de Examens_LIMITE, valeur Adresse_1 de Candidat de Examens_AJour (SET) ; - ajouter le champ Adresse_2 de Candidat de Examens_LIMITE, valeur Adresse_2 de Candidat de Examens_Ajour (SET). ==> à tester. Via l'assistant, en type de requête "ajout" : - dans la table Candidat de Examens_LIMITE (INSERT) ; - ajouter Candidat de Examens_AJour ; - ajouter Candidat de Examens_LIMITE ; - lier Candidat de Examens_AJour à Candidat de Examens_LIMITE via NAS avec flèche à droite ; - ajouter le champ NAS de Candidat de Examens_LIMITE, critère "est null" (WHERE) ; - ajouter tous les champs de Candidat de Examens_AJour dans Candidat de Examens_LIMITE. ==> à tester.
__________________
Dis-nous et à bientôt, Richard. ---------------------------------------------------------------------------------------------- . et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
|
|
|
00
|
|
|
#3 | ||||
|
Invité de passage
![]() Inscription : septembre 2008 Messages : 14 ![]() |
Merci Richard 35,
J'ai testé tes solutions et voilà les codes qui en résultent. Ils font ce que je voulais mais avant de modifier les quelques 550000 lignes de mon fichier en production, je te serais reconnaissant d'y jeter un oeil et peut-être me signaler si quelque chose te semble bizarre. J'ai nommé SOURCE la table avec les données les plus récentes et DESTINATION ma table dans laquelle je souhaite importer les données UPDATE: Code sql :
AJOUT: Code sql :
Merci!
|
||||
|
|
00
|
|
|
#4 |
|
Expert Confirmé
![]() Inscription : juillet 2007 Messages : 2 176 ![]() |
Bonjour LIMITE,
Je préfère que tu postes l'image graphique des requêtes (via l'assistant), c'est plus parlant. Sinon, tu peux : - faire une sauvegarde de ta table DESTINATION ; - lancer les requêtes ; - analyser les données "avant/après" de DESTINATION. ==> tu devrais, ainsi, pouvoir tout analyser.
__________________
Dis-nous et à bientôt, Richard. ---------------------------------------------------------------------------------------------- . et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
|
|
|
00
|
|
|
#5 |
|
Invité de passage
![]() Inscription : septembre 2008 Messages : 14 ![]() |
Merci Richard,
Je vais effectivement faire des tests avant d'envoyer ça en prod. Je vais mettre le post en Résolu mais je suis intrigué par ta demande d'afficher une image graphique de la requête. Comment est-ce que je peux produire cette image, est-ce que c'est similaire a l'affichage des relations de ma base? Encore merci pour ton aide! |
|
|
00
|
|
|
#6 | |||
|
Expert Confirmé
![]() Inscription : juillet 2007 Messages : 2 176 ![]() |
Bonsoir LIMITE,
Citation:
Quant à ta requête Code sql :
__________________
Dis-nous et à bientôt, Richard. ---------------------------------------------------------------------------------------------- . et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
|
|||
|
|
00
|
|
|
#7 |
|
Membre Expert
![]() |
bonjour
Je te propose de faire des recherches sur ce qu'on appelle la réplication dans access.(voir replica et replicas partiels dans l'aide d'access) @+ |
|
|
00
|
|
|
#8 |
|
Invité de passage
![]() Inscription : septembre 2008 Messages : 14 ![]() |
Merci à tous et spécialement à Richard 35. Pour ce qui est du JOIN effectivement, il n'y en a pas mais, Quel est l'impact? Merci
|
|
|
00
|
|
|
#9 | |
|
Expert Confirmé
![]() Inscription : juillet 2007 Messages : 2 176 ![]() |
Bonjour LIMITE,
Citation:
Pour répondre à ta question, le JOIN remplace de WHERE.
__________________
Dis-nous et à bientôt, Richard. ---------------------------------------------------------------------------------------------- . et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
|
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com