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

Macros et VBA Excel Discussion :

Microsoft Query excel 2003


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    776
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 776
    Par défaut Microsoft Query excel 2003
    bonjour,

    voici quelques heures que je me bats avec une syntaxe SQL
    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
    SELECT T_PLANNING_CLIENT.Num_protocole AS [Numéro Protocole],
      T_PROTOCOLE.[Nombre de visites], 
      Min(T_PLANNING_CLIENT.Date) AS [Date Début], 
      Count(T_PLANNING_CLIENT.Date) AS [Nombre de volontaire demandé], 
      Sum(IIf(T_PLANNING_CLIENT.[RDV pris]=2,0, T_PLANNING_CLIENT.[RDV pris]) AS [Nombre de volontaire recruté]), 
      Count(T_PLANNING_CLIENT.Date)-Sum(T_PLANNING_CLIENT.[RDV pris]) AS Delta, 
      IIf(T_PLANNING_CLIENT.[RDV pris]=2,"Test Annulé",
        IIf(T_PLANNING_CLIENT.[Date]<=Now(),"Test en cours","Test à planifier")
      ) AS [Statut du test] 
    FROM T_PLANNING_CLIENT 
    INNER JOIN T_PROTOCOLE ON T_PLANNING_CLIENT.Num_protocole = T_PROTOCOLE.Numéro 
    GROUP BY T_PLANNING_CLIENT.Num_protocole, T_PROTOCOLE.[Nombre de visites], 
      IIf(T_PLANNING_CLIENT.[RDV pris]=2,"Test Annulé",
        IIf(T_PLANNING_CLIENT.[Date]<=Now(),"Test en cours","Test à planifier")
      ), 
      T_PLANNING_CLIENT.Visites 
    HAVING (((T_PLANNING_CLIENT.Visites)=1)) 
    ORDER BY T_PLANNING_CLIENT.Num_protocole;
    j'ai toujours le meme message
    syntaxe incorrecte vers '='
    syntaxe incorrecte vers 'T_PLANNING_CLIENT'
    impossible de preparer les instructions

    je ne comprends pas trop le problème car je ne fais que copier une requête depuis access
    elle fonctionne très bien d'ailleur mais pas dans le sql query de excel
    quelqu'un a t il une piste ou une idée car là j'avoue que ca m'énerve de tourner en rond....

    merci d'avance
    et bon réveillon...
    munity

  2. #2
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Je dirais qu'il faut un WHERE plutôt qu'un HAVING puisque la condition semble porter sur une colonne et non pas sur le résultat d'un calcul de regroupement.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    776
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 776
    Par défaut
    oui merci pour le déplacement du message
    par contre tu penses que le problème vient du having plutot que le where
    concernant mon erreur de syntaxe sur le signe '='

  4. #4
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Il y a aussi une parenthèse mal placée à la ligne sum et des parenthèses inutiles au HAVING mais ça c'est signé Access !

    Essaie comme ça :
    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
    SELECT T_PLANNING_CLIENT.Num_protocole AS [Numéro Protocole],
      T_PROTOCOLE.[Nombre de visites], 
      Min(T_PLANNING_CLIENT.Date) AS [Date Début], 
      Count(T_PLANNING_CLIENT.Date) AS [Nombre de volontaire demandé], 
      Sum(IIf(T_PLANNING_CLIENT.[RDV pris] = 2, 0, T_PLANNING_CLIENT.[RDV pris])) AS [Nombre de volontaire recruté], 
      Count(T_PLANNING_CLIENT.Date) - Sum(T_PLANNING_CLIENT.[RDV pris]) AS Delta, 
      IIf(T_PLANNING_CLIENT.[RDV pris] = 2, "Test Annulé",
        IIf(T_PLANNING_CLIENT.[Date] <= Now(), "Test en cours", "Test à planifier")
      ) AS [Statut du test] 
    FROM T_PLANNING_CLIENT 
    INNER JOIN T_PROTOCOLE ON T_PLANNING_CLIENT.Num_protocole = T_PROTOCOLE.Numéro 
    WHERE T_PLANNING_CLIENT.Visites = 1
    GROUP BY T_PLANNING_CLIENT.Num_protocole, 
      T_PROTOCOLE.[Nombre de visites], 
      IIf(T_PLANNING_CLIENT.[RDV pris] = 2, "Test Annulé",
        IIf(T_PLANNING_CLIENT.[Date] <= Now(), "Test en cours", "Test à planifier")
      ), 
      T_PLANNING_CLIENT.Visites 
    ORDER BY T_PLANNING_CLIENT.Num_protocole;
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    776
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 776
    Par défaut
    re
    bon ben j'ai essayé avec ta soluce mais rien n'y fait
    par contre je n'ai plus le message
    syntaxe incorrecte vers 'T_PLANNING_CLIENT'
    mais
    toujours
    syntaxe incorrecte vers '='

    avec ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT T_PLANNING_CLIENT.Num_protocole AS [Numéro Protocole], T_PROTOCOLE.[Nombre de visites],   Min(T_PLANNING_CLIENT.Date) AS [Date Début],   Count(T_PLANNING_CLIENT.Date) AS [Nombre de volontaire demandé], (Sum(IIf(T_PLANNING_CLIENT.[RDV pris]=2, 0, T_PLANNING_CLIENT.[RDV pris])) AS [Nombre de volontaire recruté], Count(T_PLANNING_CLIENT.Date) - Sum(T_PLANNING_CLIENT.[RDV pris]) AS Delta, 
    (IIf(T_PLANNING_CLIENT.[RDV pris]=2, "Test Annulé",
    IIf(T_PLANNING_CLIENT.[Date] <= Now(), "Test en cours", "Test à planifier")) AS [Statut du test]) FROM T_PLANNING_CLIENT INNER JOIN T_PROTOCOLE ON T_PLANNING_CLIENT.Num_protocole = T_PROTOCOLE.Numéro WHERE T_PLANNING_CLIENT.Visites = 1GROUP BY T_PLANNING_CLIENT.Num_protocole, 
    T_PROTOCOLE.[Nombre de visites],   (IIf(T_PLANNING_CLIENT.[RDV pris]=2, "Test Annulé",
    IIf(T_PLANNING_CLIENT.[Date]<=Now(), "Test en cours", "Test à planifier"))), T_PLANNING_CLIENT.Visites 
    ORDER BY T_PLANNING_CLIENT.Num_protocole;
    au secours

  6. #6
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Si c'est comme dans MySQL, "syntaxe incorrecte vers =" signifie que l'erreur est juste avant un signe =.
    Vérifie dans ta requête que ce qui se trouve à côté des signes = est correctement écrit.

    Je vois que dans la reproduction de ma requête, non indentée, dans ton message, GROUP BY est collé à la fin de la condition WHERE. Il faudrait un espace entre le 1 et le GROUP BY.

    Une autre manière de voir ce qui ne lui plaît pas est de supprimer toutes les morceaux de requête où il y a le signe = puis de les replacer l'un après l'autre.

    A tout hasard, comme chez Petitmou on adore les parenthèses, n'en faudrait-il pas autour de la condition du iif ?
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 20/11/2012, 11h47
  2. [EXCEL 2003] Ou est "Microsoft MonthView Control 6.0"
    Par Jean-Pierre49 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 30/09/2008, 16h33
  3. Piloter Microsoft Excel 2003 avec Interop
    Par marcolet.pierre dans le forum Général Dotnet
    Réponses: 4
    Dernier message: 20/02/2008, 22h27
  4. Réponses: 1
    Dernier message: 18/01/2008, 11h47
  5. [EXCEL] Stopper Microsoft Query
    Par Invité dans le forum Excel
    Réponses: 4
    Dernier message: 15/01/2007, 12h15

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