Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access
Access Forum d'entraide sur Microsoft Access. Avant de poster -> La F.A.Q Access
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 24/01/2012, 09h28   #1
Candidat au titre de Membre du Club
 
Homme Bertrand
Inscription : octobre 2011
Messages : 47
Détails du profil
Informations personnelles :
Nom : Homme Bertrand
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Secteur : Industrie

Informations forums :
Inscription : octobre 2011
Messages : 47
Points : 14
Points : 14
Par défaut Fusion entre tables avec relations

Bonjour,
Pour des raisons de simplification de maintenance, j’aimerais fusionner 2 tables, mais je m’interroge sur la façon de faire à cause des relations avec les tables liées

Je vais essayer d’être clair !

1) J’ai une table A (plusieurs milliers de lignes) en relation 1 à plusieurs avec 2 tables B et C
Les tables A, B et C ont un index auto
Les tables B et C ont un champ reprenant le N°Auto de la table A pour faire la relation un à plusieurs

2) J’ai une table D (plusieurs centaines de lignes) en relation 1 à plusieurs avec 2 tables E et F
Les tables D,E et F ont un index auto
Les tables E et F ont un champ reprenant le N°Auto de la table D pour faire la relation un à plusieurs

Les tables A et D ont la même structure (nom de champs différents mais que je peux renommer)
Idem pour B et E, et pour C et F

Par une requête ajout ou un copier/coller je sais ajouter D à A, E à B, F à C mais je ne vois pas comment gérer les relations

Par avance merci de vos suggestions
Bertrand
105rn2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2012, 10h09   #2
Expert Confirmé
 
Avatar de Richard_35
 
Homme
Inscription : juillet 2007
Messages : 2 189
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : juillet 2007
Messages : 2 189
Points : 2 826
Points : 2 826
Bonjour 105rn2 ,

Intéressant...

En fait, le problème ne se pose que pour :
  • D qui va prendre un autre n° auto en fusionnant avec A ;
  • E et F qui vont conserver l'ancien n° de D en clé étrangère.

Suggestion :
  • ajouter un champ numérique à A ==> Id_D_Old ;
  • ajouter un champ numérique à D ==> Id_D_Old ;
    ==> A et D toujours avec la même structure.
  • requête "mise à jour" sur D ==> Id_D_Old=Id_D (Id_D=clé primaire actuelle de D en n° auto) ;
  • requête "ajout" de D vers A ==> Id_A (n° auto) ;
    ==> Id_A devient la clé primaire des anciens D, mais nous avons stocké l'ancienne clé primaire de D.
  • requête "mise à jour" sur E liée à A, via E.Id_D=A.Id_D_Old ==> E.Id_D=A.Id_A ;
    ==> mise à jour de la clé étrangère de E.
  • requête "mise à jour" sur F liée à A, via F.Id_D=A.Id_D_Old ==> F.Id_D=A.Id_A ;
    ==> mise à jour de la clé étrangère de F.
==> les liens devraient être reconstruits.


Bien entendu :
  • prévoir la sauvegarde de toutes les tables avant toute manipulation ;
  • personne ne doit travailler sur ces tables.

A tester.
__________________
Dis-nous et à bientôt,
Richard.
----------------------------------------------------------------------------------------------
En cas de résolution, et afin de faciliter la tâche des bénévoles, merci de cliquer sur .
et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
Richard_35 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 24/01/2012, 11h27   #3
Candidat au titre de Membre du Club
 
Homme Bertrand
Inscription : octobre 2011
Messages : 47
Détails du profil
Informations personnelles :
Nom : Homme Bertrand
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Secteur : Industrie

Informations forums :
Inscription : octobre 2011
Messages : 47
Points : 14
Points : 14
Bonjour Richard,
merci pour cette réponse rapide et pleine de bon sens !
je n'avais pas pensé à la clé "temporaire"
Je suppose qu'à la fin je peux fusionner B et E, puis C et F
Par contre, pour l'essai il va me falloir plusieurs jours ; pour simplifier la question j'avais supposé que A et D avaient la même structure, ce qui n'est pas tout a fait vrai, mais faisable : qq champs à ajouter/modifier
mais comme pour e genre de manip, je ne vais pas très vite et fait bcp de sauvegardes intermédiaires ...
merci encore, je vous tiens au courant !
Bertrand
105rn2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2012, 22h36   #4
Candidat au titre de Membre du Club
 
Homme Bertrand
Inscription : octobre 2011
Messages : 47
Détails du profil
Informations personnelles :
Nom : Homme Bertrand
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Secteur : Industrie

Informations forums :
Inscription : octobre 2011
Messages : 47
Points : 14
Points : 14
Bonsoir,
j'ai "bien travaillé" et maintenant mes structures sont (ou devraient être !) identiques.
J'ai par contre du mal(désolé je suis débutant) à synthétiser la requête de mise à jour :
Citation:
requête "mise à jour" sur E liée à A, via E.Id_D=A.Id_D_Old ==> E.Id_D=A.Id_A ;
==> mise à jour de la clé étrangère de E.
dans la requête, peux t on mettre à jour un champ étant à la base de la sélection ? ou dois je créer dans E un nouveau champ E.Id_D_New intermédiaire ?
par avance, merci
Bertrand
105rn2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/01/2012, 10h16   #5
Expert Confirmé
 
Avatar de Richard_35
 
Homme
Inscription : juillet 2007
Messages : 2 189
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : juillet 2007
Messages : 2 189
Points : 2 826
Points : 2 826
Bonjour 105rn2,

Citation:
Envoyé par 105rn2
Citation:
Envoyé par Richard_35
requête "mise à jour" sur E liée à A, via E.Id_D=A.Id_D_Old ==> E.Id_D=A.Id_A ;
==> mise à jour de la clé étrangère de E.
dans la requête, peux t on mettre à jour un champ étant à la base de la sélection ?
==> effectivement, c'est un point délicat. Le mieux est de le tester : je pense que cela devrait passer.
__________________
Dis-nous et à bientôt,
Richard.
----------------------------------------------------------------------------------------------
En cas de résolution, et afin de faciliter la tâche des bénévoles, merci de cliquer sur .
et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
Richard_35 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 26/01/2012, 23h06   #6
Candidat au titre de Membre du Club
 
Homme Bertrand
Inscription : octobre 2011
Messages : 47
Détails du profil
Informations personnelles :
Nom : Homme Bertrand
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Secteur : Industrie

Informations forums :
Inscription : octobre 2011
Messages : 47
Points : 14
Points : 14
Bonsoir,
Effectivement ça passe
J'ai eu qq pb avec les liens entre tables que j'avais oublié de supprimer : Access me refusait donc logiquement de modifier les id car ne correspondant plus à la table liée !
Une fois ces liens supprimés, ça a marché nickel chrome !
Merci encore de votre aide et de vos explications détaillées
Bertrand
105rn2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h23.


 
 
 
 
Partenaires

Hébergement Web