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 :

Concaténer plusieurs bases


Sujet :

Access

  1. #21
    Membre à l'essai
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mars 2017
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Mars 2017
    Messages : 49
    Points : 17
    Points
    17
    Par défaut
    Merci
    Mais ça ne m'arrange pas car je ne sais pas écrire la commande SQL qui permet de tout sélectionner. De plus, c'est juste un test avec 2 bases, mais au final j'en aurai 12 !

    Et comment faire pour que, lorsque je lance la requête, il ne me pose pas plusieurs fois la question "Caractères cherchés :" ?

  2. #22
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 760
    Points : 14 795
    Points
    14 795
    Par défaut
    bonjour,
    voici comment :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    PARAMETERS [Caractères cherchés :] Text;
    SELECT DateInfo, Info, Confidentiel, NomLabo
    FROM Labos INNER JOIN ReportingL3S ON Labos.IdLabo = RefLabo
    WHERE (((Info) Like"*" & [Caractères cherchés :] & "*") AND ((Labos.IdLabo)=[RefLabo]))
    UNION ALL
    SELECT DateInfo, Info, Confidentiel, NomLabo
    FROM Labos INNER JOIN ReportingLCE ON Labos.IdLabo = RefLabo
    WHERE (((Info) Like"*" & [Caractères cherchés :] & "*") AND ((Labos.IdLabo)=[RefLabo]))
    ORDER BY DateInfo DESC;
    - avec Parameters, il ne te demandera qu'une seule fois les caractères
    - pour le tri, il ne faut pas spécifier la table (dans le SELECT et le WHERE non plus) c'est juste indispensable dans le FROM . En plus ce sera plus facile pour dupliquer les 10 autres

  3. #23
    Membre à l'essai
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mars 2017
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Mars 2017
    Messages : 49
    Points : 17
    Points
    17
    Par défaut
    Merci
    Quand je lance la requête il me dit "Expression JOIN non supportée." j'ai sauvé la base au format de fichier Access 2007-2016

    C'est étonnant car ceci fonctionne mais demande les caractères deux fois :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    PARAMETERS [Caractères cherchés :] Text;
    SELECT ReportingL3S.DateInfo, ReportingL3S.Info, ReportingL3S.Confidentiel, Labos.NomLabo
    FROM Labos INNER JOIN ReportingL3S ON Labos.IdLabo = ReportingL3S.RefLabo
    WHERE (((ReportingL3S.Info) Like"*" & [Caractères cherchés :] & "*") AND ((Labos.IdLabo)=[ReportingL3S].[RefLabo]))
    UNION ALL
    SELECT ReportingLCE.DateInfo, ReportingLCE.Info, ReportingLCE.Confidentiel, Labos.NomLabo
    FROM Labos INNER JOIN ReportingLCE ON Labos.IdLabo = ReportingLCE.RefLabo
    WHERE (((ReportingLCE.Info) Like"*" & [Caractères cherchés :] & "*") AND ((Labos.IdLabo)=[ReportingLCE].[RefLabo]))
    ORDER BY ReportingL3S.DateInfo DESC;
    Du coup je m'en suis inspiré et j'obtiens ça qui fonctionne et ne demande les caractères qu'une seule fois :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    PARAMETERS [Caractères cherchés :] Text;
    SELECT DateInfo, Info, Confidentiel, NomLabo
    FROM Labos INNER JOIN ReportingL3S ON Labos.IdLabo = ReportingL3S.RefLabo
    WHERE (((Info) Like"*" & [Caractères cherchés :] & "*") AND ((Labos.IdLabo)=[RefLabo]))
    UNION ALL
    SELECT DateInfo, Info, Confidentiel, NomLabo
    FROM Labos INNER JOIN ReportingLCE ON Labos.IdLabo = ReportingLCE.RefLabo
    WHERE (((Info) Like"*" & [Caractères cherchés :] & "*") AND ((Labos.IdLabo)=[RefLabo]))
    ORDER BY DateInfo DESC;
    GRAND MERCI POUR TON AIDE !!!

  4. #24
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 760
    Points : 14 795
    Points
    14 795
    Par défaut
    Quand je lance la requête il me dit "Expression JOIN non supportée." j'ai sauvé la base au format de fichier Access 2007-2016
    oui, c'est ma faute, j'ai par erreur enlevé le nom de la table dans INNER JOIN

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    INNER JOIN ReportingL3S ON Labos.IdLabo = RefLabo
    INNER JOIN ReportingL3S ON Labos.IdLabo = ReportingL3S.RefLabo
    désolé.
    Si c'est OK pour toi, n'oublie pas le

  5. #25
    Membre à l'essai
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mars 2017
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Mars 2017
    Messages : 49
    Points : 17
    Points
    17
    Par défaut
    Citation Envoyé par tee_grandbois Voir le message
    Si c'est OK pour toi, n'oublie pas le
    C'est OK mais pas terminé : je dois faire un formulaire et un rapport. Dois-je clore ce sujet et en lancer un autre au besoin, ou bien je continue sur celui-ci ?

  6. #26
    Membre à l'essai
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mars 2017
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Mars 2017
    Messages : 49
    Points : 17
    Points
    17
    Par défaut
    Je voudrais mettre des commentaires dans mes codes SQL mais ni %, ni -- ni /* */ ne fonctionnent : quand j'enregistre j'obtiens un message d'erreur (commande invalide). Comment faire pour rendre mon code plus lisible ?

    Nom : Capture.JPG
Affichages : 182
Taille : 82,9 Ko

  7. #27
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 760
    Points : 14 795
    Points
    14 795
    Par défaut
    Hélas, il n'est pas possible de mettre du commentaire directement dans le SQL. Mais tu peux utiliser la propriété Description de la requête qui apparait avec le menu contextuel dans la liste de Tous les objets Access (bouton de droite sur la requête, puis Propriétés de l'objet) ou directement dans la fenêtre feuille de propriétés à droite en mode création

  8. #28
    Membre à l'essai
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mars 2017
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Mars 2017
    Messages : 49
    Points : 17
    Points
    17
    Par défaut
    C'est mieux que rien, merci.

    Une dernière question, car je pense arriver au bout de mon appli : est-il possible de récupérer le nom du fichier .accdb qui est ouvert ? J'aimerais en tirer une chaîne de caractères qui me permettrait de savoir quelle entité est en train de renseigner la base ?

  9. #29
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 760
    Points : 14 795
    Points
    14 795
    Par défaut
    Bonjour,
    je n'ai peut être pas bien compris la question, mais si tu cherches à connaitre d'où proviennent les données, c'est plus simple de le faire dans la requête puisque chaque table a un nom différent, il suffit d'ajouter un champ contenant "l'identité" de la base d'origine :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    PARAMETERS [Caractères cherchés :] Text;
    SELECT "L3S" as IdUtil, DateInfo, Info, Confidentiel, NomLabo
    FROM Labos INNER JOIN ReportingL3S ON Labos.IdLabo = ReportingL3S.RefLabo
    WHERE (((Info) Like"*" & [Caractères cherchés :] & "*") AND ((Labos.IdLabo)=[RefLabo]))
    UNION ALL
    SELECT "LCE" as IdUtil, DateInfo, Info, Confidentiel, NomLabo
    FROM Labos INNER JOIN ReportingLCE ON Labos.IdLabo = ReportingLCE.RefLabo
    WHERE (((Info) Like"*" & [Caractères cherchés :] & "*") AND ((Labos.IdLabo)=[RefLabo]))
    ORDER BY DateInfo DESC;

  10. #30
    Membre à l'essai
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mars 2017
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Mars 2017
    Messages : 49
    Points : 17
    Points
    17
    Par défaut
    Non, c'est pour autre chose : lorsque l'utilisateur renseigne sa base frontale avec un formulaire, la table de reporting contient son identifiant (L3S, LCE, etc). J'aimerais qu'il n'ait pas à le renseigner à chaque fois et que ça soit fait automatiquement. Or sa base contient cette information dans son nom, par exemple Weekly_L3S.accdb ou Weekly_LCE.accdb. Si je peux récupérer le nom du fichier dans le traitement du formulaire, je dois pouvoir en extraire les caractères qui viennent après le _ pour renseigner automatiquement l'identifiant (qui s'appellera ensuite NomLabo)

  11. #31
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 760
    Points : 14 795
    Points
    14 795
    Par défaut
    Ok, le nom de la base complète, est obtenue avec Currentdb.name utilisable uniquement dans VBA.

  12. #32
    Membre à l'essai
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mars 2017
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Mars 2017
    Messages : 49
    Points : 17
    Points
    17
    Par défaut
    Je vais m'en passer alors, merci encore !

  13. #33
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 760
    Points : 14 795
    Points
    14 795
    Par défaut
    Citation Envoyé par lesept Voir le message
    Je vais m'en passer alors, merci encore !
    pourquoi ?

  14. #34
    Membre à l'essai
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mars 2017
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Mars 2017
    Messages : 49
    Points : 17
    Points
    17
    Par défaut
    Je n'ai pas envie de faire du VBA...

  15. #35
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 760
    Points : 14 795
    Points
    14 795
    Par défaut
    c'est pourtant le seul moyen pour avoir accès à plus d'informations ....
    Tu peux mettre ceci dans la fenêtre VBA (Alt+F11 pour la faire apparaitre) dans un Module VBA pour récupérer les 3 dernières lettres du nom de la base. La fonction Instr() renvoie la position du point (toujours présent dans le nom d'une base de donnée) et la fonction Mid() va extraire les 3 caractères à partir de la position du point moins 3:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Function fdbName() As String
    fdbName = Mid(Application.CurrentDb.Name, InStr(Application.CurrentDb.Name, ".") - 3, 3)
    End Function
    ainsi tu pourras utiliser cette fonction dans un formulaire, un état ou dans une requête en tapant : =fdbName()

  16. #36
    Membre à l'essai
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mars 2017
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Mars 2017
    Messages : 49
    Points : 17
    Points
    17
    Par défaut
    Merci, ça fonctionne
    J'ai du faire une fausse manip car mon formulaire ne me permet plus d'entrer de nouveaux enregistrements (je n'ai plus la touche avec un triangle et une petite étoile en bas) : sais-tu comment retrouver cette possibilité ?

  17. #37
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 760
    Points : 14 795
    Points
    14 795
    Par défaut
    est-ce arrivé depuis la dernière modification ?

  18. #38
    Membre à l'essai
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mars 2017
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Mars 2017
    Messages : 49
    Points : 17
    Points
    17
    Par défaut
    Je ne sais pas dire quand c'est apparu, si ce n'est pas un bug standard ce n'est pas grave car j'ai une sauvegarde

  19. #39
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 760
    Points : 14 795
    Points
    14 795
    Par défaut
    cela peut être à cause d'une des propriétés suivantes du formulaire :
    - Ajout autorisé : doit être à Oui
    - Modif autorisée : doit être à Oui
    - Type RecordSet : doit être à Feuille de réponse dynamique
    - Source: si c'est une requête elle doit pouvoir être mise à jour (pas de requête de regroupement, de distinct ou une jointure avec une table sans clé primaire empêchant la mise à jour)

  20. #40
    Membre à l'essai
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mars 2017
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Mars 2017
    Messages : 49
    Points : 17
    Points
    17
    Par défaut
    Merci, je vais regarder ça !

Discussions similaires

  1. Concaténer plusieurs bases access identiques
    Par guen dans le forum Power BI
    Réponses: 3
    Dernier message: 13/06/2016, 08h07
  2. Réponses: 1
    Dernier message: 30/04/2008, 10h44
  3. triggers sur plusieurs bases de données
    Par Shabata dans le forum Langage SQL
    Réponses: 2
    Dernier message: 04/05/2004, 10h02
  4. Accès à plusieurs bases de données
    Par k4eve dans le forum Hibernate
    Réponses: 11
    Dernier message: 22/04/2004, 15h43
  5. [BDE]requête dans plusieurs bases
    Par sbeu dans le forum Bases de données
    Réponses: 2
    Dernier message: 01/03/2004, 09h24

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