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

Requêtes et SQL. Discussion :

JOIN avec une table qui est dans une AUTRE base access


Sujet :

Requêtes et SQL.

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2008
    Messages : 57
    Points : 47
    Points
    47
    Par défaut JOIN avec une table qui est dans une AUTRE base access
    Bonjour, et au secours svp.. J'avais posté initialement dans le forum SQL mais il semblerait que mon pb soit plus spécifique à Access qu'à SQL.

    Je n'arrive pas à faire marcher la requête ci-dessous : Elle sert à archiver les données de la table 'sinistres' (des 'sinistres' antérieurs à une certaine date) dans la table 'ArchiveSinistres'. Cette dernière est de même format que 'sinistres' mais elle est dans une autre base de données dont le chemin est donné dans la directive 'IN'.

    En fait, la clause WHERE ne trouve pas la table 'ArchiveSinistres' (malgré le IN 'C:\Documents and Settings\Pierre\Bureau\Archivage.accdb').

    Cette requête ne marche que si j'importe avec liaison la table d'archive dans la base de départ. D'ailleurs, si je l'importe, je n'ai évidemment plus besoin de donner son chemin d'accès dans la requête.
    Je voudrais éviter de l'importer. Mais dans ce cas la clause WHERE ne voit pas la table externe, alors que la clause 'INSERT INTO' la trouve bien grâce au 'IN'.
    Y-a-t'il un moyen d'éviter d'importer la table ? et de faire cette requête d'insertion avec un LEFT JOIN sur cette table externe ?

    + de 48h que je suis collé là dessus !!! Merci d'avance

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    INSERT INTO ArchiveSinistres IN 'C:\Documents and Settings\Pierre\Bureau\Archivage.accdb'
    SELECT sinistres.*
    FROM sinistres LEFT JOIN ArchiveSinistres 
    ON sinistres.N_interne = ArchiveSinistres.N_interne
    WHERE (((sinistres.date_envoi)<[forms]![Archivage]![DateArchivage]) 
    AND ((ArchiveSinistres.N_interne) IS NULL));

  2. #2
    Membre régulier
    Inscrit en
    Mai 2008
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 104
    Points : 124
    Points
    124
    Par défaut
    Bonsoir,
    Mauvaises nouvelles : il faudrait répéter le in dans le select mais de toutes façons semble-t-il pas de mélange : c'est Bill qui le dit :
    http://office.microsoft.com/fr-fr/ac...314841036.aspx
    Donc : table liée comme le dit Bill au même endroit. Ça peut se faire à la volée pour maîtriser les changements de répertoire etc. comme tu le ferais avec ton "in" mais c'est quand même beaucoup plus confortable en mise au point et en maintenance.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2008
    Messages : 57
    Points : 47
    Points
    47
    Par défaut
    Merci Bevan,
    Je vais donc m'en tenir à la table liée.
    Ce qui me gêne n'est pas grand chose finalement : c'est le message d'ouverture de la base distante, au moment de l'importation (message de warning sur le contenu VBA et macro). Je pense qu'il doit y avoir un moyen de le supprimer, je vais chercher ça sur le forum...
    Bonne journée.

  4. #4
    Membre émérite

    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 751
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 751
    Points : 2 368
    Points
    2 368
    Par défaut
    Bonjour,

    Une petite suggestion, en passant.

    Si tu ne veux vraiment pas importer ni lier la table, tu pourrais en lieu et place créer "à la volée" une requête ArchiveSinistres dont le SQL serait
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM ArchiveSinistres IN 'C:\Documents and Settings\Pierre\Bureau\Archivage.accdb'
    Celà fonctionnerait "à la manière" d'une table liée, mais en un peu moins performant.
    _

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2008
    Messages : 57
    Points : 47
    Points
    47
    Par défaut Résolu
    Merci JBO, je répond un peu tard car j'étais sur autre chose mais ta suggestion est bonne.
    Par contre en terme de performance (par rapport à la solution avec table importée), je n'ai pas pu mesurer faute d'avoir un volume de données suffisant.
    Merci encore...

    (Pb 'résolu' pour moi....)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 06/03/2008, 21h20
  2. Ce qui est dans une table mais pas dans l'autre !
    Par youyoule dans le forum Requêtes
    Réponses: 4
    Dernier message: 30/12/2007, 12h57
  3. Accéder à une variable qui est dans une string
    Par ploxien dans le forum Langage
    Réponses: 4
    Dernier message: 13/04/2007, 14h48
  4. appel d'une fonction qui est dans une autre page
    Par guppy33 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 02/08/2006, 12h05
  5. voir comment est alimentée une vue qui est dans dba_objects
    Par meufeu dans le forum Administration
    Réponses: 15
    Dernier message: 06/10/2004, 17h27

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