IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Access Discussion :

Transfert de données d'une base à une autre (similaire)


Sujet :

Access

  1. #1
    Membre actif Avatar de FadeToBlack
    Homme Profil pro
    ...
    Inscrit en
    Août 2010
    Messages
    311
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : ...
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Août 2010
    Messages : 311
    Points : 202
    Points
    202
    Par défaut Transfert de données d'une base à une autre (similaire)
    Bonjour à tous,

    Je vous expose mon problème*:

    J'ai construit une base de données composées de 15 tables au niveau du MCD et 23 tables au MPD.

    Cette base comportent donc tous les types de relations (0,1—0,n;0,n—0,n;0,1—0,1).

    Chaque table comporte un certain nombre d'attributs, et toute dispose d'une clef primaire auto-incrémentée.

    J'ai construit par la suite une petite application de gestion sous Access 2003. Cette application devait à l'origine être mono poste. Mais le commanditaire m'a informé après qu'il y avait deux utilisateurs ayant chacun l'appli sur leur poste.

    On arrive à la problématique
    Comment faire pour intégrer les données d'une des deux bases dans l'autre. J'essaie de faire des requêtes ajout des tables d'une base à l'autre, mais j'ai toujours la même réponse*:
    «*Insertion impossible dûe à une violation de clef ou de relations multi tables*»

    Auriez vous une idée sur la manip à effectuer. Sous Sql_Server, il y a une manip du genre «*Set Identity on/Off*».
    Est-ce qu'il existe une telle manip sous access (à la rigueur sous VBA), mais du coup comment conserver les relations entre PK et FK

    Merci de votre aide et bon WE
    Douter de tout, toujours, et surtout de soi-même...

  2. #2
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 004
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 004
    Points : 24 593
    Points
    24 593
    Par défaut
    Bonjour,

    Le problème est que tu veux ajouter des clefs dans les champs NumeroAuto alors que c'est impossible, c'est Jet qui est seul autorisé à faire cette opération.

    La solution est de ne pas transférer la clef, de laisser faire ACCESS et de construire tes requêtes AJout en prenant en compte la nouvelle clef.

    La solution, de loin la plus sure, est de créer un nouveau champ numérique long dans chaque table mère où tu y placera l'ancien ID. Lorsque que tu fais ton insertion dans la table enfant tu fais une relation avec ce champ pour créer le nouvel ID.

    On peut également travailler sans champ mais il faut capter le dernier ID des tables de destination, insérer les enregistrement triés avec l'ancien ID, puis faire la correspondance via un update en utilisant une fonction vba Compteur qui tu auras pris soin de créer avant.

    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  3. #3
    Membre actif Avatar de FadeToBlack
    Homme Profil pro
    ...
    Inscrit en
    Août 2010
    Messages
    311
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : ...
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Août 2010
    Messages : 311
    Points : 202
    Points
    202
    Par défaut
    Salut Loufab,
    et merci de t'intéressé à mon problème un dimanche matin.

    En réfléchissant hier soir, je pensais bien faire comme tu le dis (ne pas essayer de copier les ID), mais je me pose une question sous-jacente à la première :

    Existe-t-il une methode pour faire le transfert de données de toutes les tables en même temps ?
    Dans la négative, je suppose qu'il faut faire table par table (cela me semble logique), mais dans ce cas comment s'assurer du respect des clefs primaires et étrangères dans les relations entre les tables ?

    Il faut créer un ordre et ou le déterminer comment ?

    A+ et bon dimanche
    Douter de tout, toujours, et surtout de soi-même...

  4. #4
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 004
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 004
    Points : 24 593
    Points
    24 593
    Par défaut
    Bonjour,
    Non pas de transfert global possible.
    Il faut démarrer par les tables maitres.

    Insertion avec l'ID d'origine dans un champ Long supplémentaire.
    Puis insertion des tables enfants en faisant la relation avec ce champ ID et insertion de la clef issue de la nouvelle valeur ID numéroauto.

    Il n'y a pas d'ordre dans les enregistrements, juste les pour les tables.

    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  5. #5
    Membre actif Avatar de FadeToBlack
    Homme Profil pro
    ...
    Inscrit en
    Août 2010
    Messages
    311
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : ...
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Août 2010
    Messages : 311
    Points : 202
    Points
    202
    Par défaut
    Salut Loufab,

    Bon je vais faire un essai et je reviens vers toi dès que j'aurais testé l'ensemble de mes requêtes, si cela ne fonctionne pas.

    Merci pour ton aide

    Bonne journée
    Douter de tout, toujours, et surtout de soi-même...

Discussions similaires

  1. Transfert de données d'une base à une autre
    Par laurentSc dans le forum Administration
    Réponses: 8
    Dernier message: 02/03/2010, 18h01
  2. Réponses: 4
    Dernier message: 11/04/2008, 10h48
  3. Réponses: 5
    Dernier message: 24/03/2007, 15h00
  4. Réponses: 3
    Dernier message: 12/01/2007, 16h23
  5. [MySQL] Transfert d'une base à une autre
    Par Lypertrophie dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 27/12/2005, 17h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo