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 :

Copie de requête dans une bd [AC-2003]


Sujet :

Requêtes et SQL.

  1. #1
    Membre à l'essai
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Avril 2017
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2017
    Messages : 54
    Points : 23
    Points
    23
    Par défaut Copie de requête dans une bd
    Bonjour à tous,

    je travaille actuellement sur une macro excel relié à une bd access construite sous excel 2003. La macro permet de suivre l'avancement des dossiers de fabrication en fonction des ateliers (usinage, découpe laser, pliage, inox, noir, ...).

    La macro dispose de plusieurs feuilles excel (MECA, NOIR, INOX, PREMONT, LASER, ...) reprenant l'ensemble des dossiers par atelier. Je souhaite ajouter la feuille ELEC afin de suivre l'atelier ELEC.
    Le code VBA est prêt mais je suis bloqué sur la bd access.

    Je dois créer 3 requêtes supplémentaires : tmp_ELEC, reqEC_ELEC et EC_ELEC. Etant donné que les requêtes sont similaires, j'ai choisis de copier les 3 requêtes correspondant à l'atelier microbillage puis de modifier le code SQL en remplaçant le mot MICROB par ELEC

    Je n'ai pas eu de soucis pour les 2 premières requêtes par contre je bloque sur la dernière (EC_ELEC). Dès que j'essaie de modifier la requête (même si je l'ouvre sans rien modifier et que j'essaie de l'enregistrer), access me met l'erreur :
    Mise entre crochets non valide du nom 'SELECT T2.*, IIF(IsNull(T2.res), T2.Delt, Val(T2.res)) AS Delta, IIF(IsNull(T2.[Date penurie'.

    J'ajoute le code de la requête au message, ça peut aider :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT T3.Type, T3.N°, T3.Date, T3.Client, T3.Désignation, T3.[Delta], T3.Code, T3.Qté, T3.[ Statut], T3.Délai1 AS Délai, T3.[Nmcl E], T3.OF, T3.expe + IIF(T3.Delta > 0, "", T3.penurie) AS expe, IIF(IsNull(T3.res), "", T3.Delt) AS deltAnc, T3.penurie
    FROM [SELECT T2.*, IIF(IsNull(T2.res), T2.Delt, Val(T2.res)) AS Delta,  IIF(IsNull(T2.[Date penurie]), T2.Délai,  IIF([Delta] <= 0, T2.[Date penurie], T2.Délai)) As Délai1 FROM
    (SELECT T0.*, T1.res,   IIF( IsNull( T_penurie.[Date penurie]), "" ,  T_penurie.penurie) As penurie , T_penurie.[Date penurie]
    FROM (tmp_MICROB T0 
    LEFT JOIN Delta T1
    ON T0.Code = T1.ItemCode AND T1.POSTE LIKE T0.Poste)
    LEFT JOIN T_penurie ON T0.Code= T_penurie.code) T2]. AS T3
    ORDER BY T3.Délai1, T3.Delta, T3.Client, T3.Code, LEFT(T3.OP,1), RIGHT(T3.OP,2);
    Avez-vous une idée d'où peut venir le problème et comment le résoudre ?

    N'hésitez pas à me dire si le message n'est pas clair ou si il vous avez besoin d'informations en plus.

    Merci d'avance à ceux qui m'apporteront leur aide.

  2. #2
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 107
    Points : 5 230
    Points
    5 230
    Par défaut
    Bonjour,

    Je pense que T3.[ Statut] c'est pas bon
    Utilisez Planet, gestion d'entreprise gratuite pour TPE / PME

  3. #3
    Membre à l'essai
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Avril 2017
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2017
    Messages : 54
    Points : 23
    Points
    23
    Par défaut
    Citation Envoyé par nico84 Voir le message
    Bonjour,

    Je pense que T3.[ Statut] c'est pas bon
    Bonjour Nico,

    quand tu dis T3.[ Statut], tu veux dire l'espace en trop ?

  4. #4
    Modérateur
    Avatar de Chtulus
    Homme Profil pro
    Ingénieur
    Inscrit en
    Avril 2008
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2008
    Messages : 3 094
    Points : 8 678
    Points
    8 678
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    FROM [SELECT T2.*, IIF(IsNull(T2.res), T2.Delt, Val(T2.res)) AS Delta,  IIF(IsNull(T2.[Date penurie]), T2.Délai,  IIF([Delta] <= 0, T2.[Date penurie], T2.Délai)) As Délai1 FROM 
    [...]
    LEFT JOIN T_penurie ON T0.Code= T_penurie.code) T2]. AS T3
    Corrigé ce qui est en rouge....

    @+
    « Je ne cherche pas à connaître les réponses, je cherche à comprendre les questions. »
    - Confucius -

    Les meilleurs cours, tutoriels et Docs sur les SGBD et le SQL
    Tous les cours Office
    Solutions d'Entreprise



  5. #5
    Membre à l'essai
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Avril 2017
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2017
    Messages : 54
    Points : 23
    Points
    23
    Par défaut
    Citation Envoyé par Chtulus Voir le message
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    FROM [SELECT T2.*, IIF(IsNull(T2.res), T2.Delt, Val(T2.res)) AS Delta,  IIF(IsNull(T2.[Date penurie]), T2.Délai,  IIF([Delta] <= 0, T2.[Date penurie], T2.Délai)) As Délai1 FROM 
    [...]
    LEFT JOIN T_penurie ON T0.Code= T_penurie.code) T2]. AS T3
    Corrigé ce qui est en rouge....

    @+
    Bonjour Chtulus,

    je ne comprends pas ce que tu veux dire.

    PS : je débute en access, je reprends un code qui a déjà été écris par mon prédécesseur.

  6. #6
    Modérateur
    Avatar de Chtulus
    Homme Profil pro
    Ingénieur
    Inscrit en
    Avril 2008
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2008
    Messages : 3 094
    Points : 8 678
    Points
    8 678
    Par défaut
    Re,

    Heu parce que cette requête a déjà fonctionné

    Il faut remplacer les crochets par des parenthèses.
    Votre Alias de Table "T2" et hors périmètre et il manque au moins une parenthèse fermante pour votre ....FROM () AS T3.

    Indentez voter code vous verrez de suite ce qui cloche en séparant bien vos sous-requêtes

    @+
    « Je ne cherche pas à connaître les réponses, je cherche à comprendre les questions. »
    - Confucius -

    Les meilleurs cours, tutoriels et Docs sur les SGBD et le SQL
    Tous les cours Office
    Solutions d'Entreprise



  7. #7
    Membre à l'essai
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Avril 2017
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2017
    Messages : 54
    Points : 23
    Points
    23
    Par défaut
    Citation Envoyé par Chtulus Voir le message
    Re,

    Heu parce que cette requête a déjà fonctionné

    @+
    Pour moi aussi cela semble bizarre mais j'ai repris le code SQL d'une requête existante (EC_MICROB) et la feuille excel MICROB se remplie correctement à l'aide de la bd.

    Citation Envoyé par Chtulus Voir le message

    Il faut remplacer les crochets par des parenthèses.
    Votre Alias de Table "T2" et hors périmètre et il manque au moins une parenthèse fermante pour votre ....FROM () AS T3.

    Indentez voter code vous verrez de suite ce qui cloche en séparant bien vos sous-requêtes

    @+
    J'ai remplacé les crochets par des parenthèses, par contre j'ai vérifié avec Notepad et chaque parenthèse est fermée.

    L'erreur évolue, access me dit : "Erreur de syntaxe dans la clause FROM".

  8. #8
    Modérateur
    Avatar de Chtulus
    Homme Profil pro
    Ingénieur
    Inscrit en
    Avril 2008
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2008
    Messages : 3 094
    Points : 8 678
    Points
    8 678
    Par défaut
    Re,

    Cela saute plus aux yeux...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    SELECT     T3.Type, 
            T3.N°,
            T3.Date,
            T3.Client,
            T3.Désignation,
            T3.[Delta],
            T3.Code,
            T3.Qté,
            T3.[ Statut], 
            T3.Délai1 AS Délai,
            T3.[Nmcl E], 
            T3.OF, 
            T3.expe + IIF(T3.Delta > 0, "", T3.penurie) AS expe, 
            IIF(IsNull(T3.res), "", T3.Delt) AS deltAnc, 
            T3.penurie
    FROM (
            SELECT     T2.*,
                    IIF(IsNull(T2.res), T2.Delt, Val(T2.res)) AS Delta,
                    IIF(IsNull(T2.[Date penurie]), T2.Délai,  IIF([Delta] <= 0, T2.[Date penurie], T2.Délai)) As Délai1 
            FROM
                
                    (SELECT     T0.*, 
                            T1.res,   
                            IIF( IsNull( T_penurie.[Date penurie]), "" ,  T_penurie.penurie) As penurie,
                            T_penurie.[Date penurie]
                    FROM tmp_MICROB T0 
                            LEFT JOIN Delta T1
                            ON T0.Code = T1.ItemCode 
                            AND T1.POSTE LIKE T0.Poste
                                LEFT JOIN T_penurie 
                                ON T0.Code= T_penurie.code) AS T2
    ) AS T3
                                
    ORDER BY     T3.Délai1, 
                T3.Delta, 
                T3.Client, 
                T3.Code, 
                LEFT(T3.OP,1), 
                RIGHT(T3.OP,2);

    Access et ces parenthèses...

    @+
    « Je ne cherche pas à connaître les réponses, je cherche à comprendre les questions. »
    - Confucius -

    Les meilleurs cours, tutoriels et Docs sur les SGBD et le SQL
    Tous les cours Office
    Solutions d'Entreprise



  9. #9
    Membre à l'essai
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Avril 2017
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2017
    Messages : 54
    Points : 23
    Points
    23
    Par défaut
    Citation Envoyé par Chtulus Voir le message
    Re,

    Cela saute plus aux yeux...

    @+
    Vous allez vous dire mais c'est qui ce gars mais la position des parenthèses ne me choque pas, je ne vois pas l'erreur.

  10. #10
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 107
    Points : 5 230
    Points
    5 230
    Par défaut
    Dans le requeteur excel, la gestion d'erreur est minimaliste. Une 1e étape est donc de tester la requete dans access pour voir si elle fonctionne. En cas de problème on tester individuellement les sous-requetes, ça ne mange pas de pain

    Ensuite quand le from contient un select il ne faut pas avoir peur de tester des trucs bizarres :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    select ... from {select ... from ... } as req1
    select ... from (select ... from ... ). as req1
    Enfin cela peut dépendre des versions et de la librairie utilisée dans excel (DAO, ADO...)

    Chez moi en général la syntaxe la plus simple fonctionne (avec ADO comme avec DAO) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select ... from (select ... from ... ) as req1
    Utilisez Planet, gestion d'entreprise gratuite pour TPE / PME

  11. #11
    Membre à l'essai
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Avril 2017
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2017
    Messages : 54
    Points : 23
    Points
    23
    Par défaut
    Effectivement, c'était bien les parenthèses qui bloquaient ma requête SQL.

    Merci pour votre aide à tous

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 03/12/2005, 16h56
  2. Réponses: 4
    Dernier message: 01/12/2005, 14h36
  3. Réponses: 3
    Dernier message: 22/07/2005, 12h12
  4. Résultat d'une requête dans une variable...
    Par Hoegaarden dans le forum Bases de données
    Réponses: 6
    Dernier message: 28/04/2004, 13h51
  5. Regrouper 3 requêtes dans une seule
    Par LadyArwen dans le forum Langage SQL
    Réponses: 4
    Dernier message: 21/06/2003, 09h32

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