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 :

Import de requêtes et de tables dans une nouvelle base


Sujet :

Access

  1. #1
    Membre éprouvé

    Inscrit en
    Janvier 2006
    Messages
    969
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 969
    Points : 958
    Points
    958
    Par défaut Import de requêtes et de tables dans une nouvelle base
    Bonjour

    J'ai l'impression que lorsqu'on importe des requêtes d'une base à une autre, les jointures ne sont conservées que si les tables sources existent déjà dans la table cible. Autrement, elles disparaissent.
    Quelqu'un a-t-il une idée sur la question, et une éventuelle solution de contournement (la solution "yaka importer les bases d'abord" n'est évidemment PAS une solution acceptable).

    Merci

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    la solution "yaka importer les bases d'abord" n'est évidemment PAS une solution acceptable).
    Pourquoi ?

    Access losrque tu manipules un objet requête le désosse.

    La requête suivante :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT MSysObjects.Name, MSysObjects.Type, Switch([Attribute]=0,"Début requête",[Attribute]=1,"Table destinatrice" & Chr(13) & Chr(10) & "[Name1]=Nom Table",[Attribute]=5,"Table source" & Chr(13) & Chr(10) & "[Name1]=Nom Table",[Attribute]=6,"Champ" & Chr(13) & Chr(10) & "[Name1]=Alias",[Attribute]=7,"Jointure",[Attribute]=8,"Critère",[Attribute]=11,"Tri",[Attribute]=255,"Fin requête") AS LibelleAttribut, MSysQueries.*
    FROM MSysQueries INNER JOIN MSysObjects ON MSysQueries.ObjectId = MSysObjects.Id
    WHERE (((MSysObjects.Type)=5))
    ORDER BY MSysObjects.Name, MSysQueries.Attribute;

    Te permet de voir comment Access stocke tes requêtes réellement donc s'il n'est pas capable de mener son processus d'analyse à terme (s'il manque des tables par exemple), il se rabat sur la solution la pplus proche.

    Ce qui est dommage c'est que généralement il ne t'alerte pas.

    Une solution de contourement, que je ne recommande pas, serait de mettre le SQL dans du code ou dans un champ Mémo dans une table et d'importer la table ou le code.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Membre éprouvé

    Inscrit en
    Janvier 2006
    Messages
    969
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 969
    Points : 958
    Points
    958
    Par défaut
    Citation Envoyé par marot_r Voir le message
    Pourquoi ?

    Access losrque tu manipules un objet requête le désosse.

    La requête suivante :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT MSysObjects.Name, MSysObjects.Type, Switch([Attribute]=0,"Début requête",[Attribute]=1,"Table destinatrice" & Chr(13) & Chr(10) & "[Name1]=Nom Table",[Attribute]=5,"Table source" & Chr(13) & Chr(10) & "[Name1]=Nom Table",[Attribute]=6,"Champ" & Chr(13) & Chr(10) & "[Name1]=Alias",[Attribute]=7,"Jointure",[Attribute]=8,"Critère",[Attribute]=11,"Tri",[Attribute]=255,"Fin requête") AS LibelleAttribut, MSysQueries.*
    FROM MSysQueries INNER JOIN MSysObjects ON MSysQueries.ObjectId = MSysObjects.Id
    WHERE (((MSysObjects.Type)=5))
    ORDER BY MSysObjects.Name, MSysQueries.Attribute;

    Te permet de voir comment Access stocke tes requêtes réellement donc s'il n'est pas capable de mener son processus d'analyse à terme (s'il manque des tables par exemple), il se rabat sur la solution la pplus proche.

    Ce qui est dommage c'est que généralement il ne t'alerte pas.

    Une solution de contourement, que je ne recommande pas, serait de mettre le SQL dans du code ou dans un champ Mémo dans une table et d'importer la table ou le code.

    A+
    Merci pour ton explication, c'est bien ce que je pensais... j'ai bien une autre solution, mais je n'ai pas non plus envie de la mettre en œuvre, c'est de faire un module qui va lire le code sql des requêtes et les enregistre directement dans la nouvelle base pour lui faire zapper l'analyse.
    Sinon, importer la structure de toutes les tables, importer les requêtes, retirer les tables ensuite... c'est galère aussi.

  4. #4
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    c'est de faire un module qui va lire le code sql des requêtes et les enregistre directement dans la nouvelle base pour lui faire zapper l'analyse.
    L'analyse est automatique dés que tu manipules du SQL donc je ne pense pas qu'on puisse la zappé.

    Dans ton cas j'irai vers la table qui contient le SQL, c'est ce qui me parait présenter le meilleur rapport travail/resultat.

    L'accès au SQL se fait assez facilement avec les objets DAO.QueryDef de la collection DAO.Querydefs et l'ajout à une table est aussi très facile à faire.

    Après l'import de la table ne nécessite que la manipulation d'un seul objet et même si je n'aime pas lire le SQL dans le texte cela reste très utilisable.

    Mais au fait, pourquoi as-tu besoin de cela ?

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

Discussions similaires

  1. [AC-2003] Requête sur plusieurs tables dans une seule liste
    Par tarnx dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 04/12/2009, 11h36
  2. Réponses: 5
    Dernier message: 08/12/2008, 19h01
  3. Réponses: 4
    Dernier message: 15/03/2007, 20h32
  4. Exporter une table dans une nouvelle base de données
    Par kaptnkill dans le forum Access
    Réponses: 14
    Dernier message: 11/07/2006, 23h34
  5. Réponses: 1
    Dernier message: 10/05/2006, 15h01

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