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 :

ne s'agit il pas d'un bug dans access2002?


Sujet :

Access

  1. #1
    Candidat au Club
    Inscrit en
    Décembre 2005
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 12
    Points : 4
    Points
    4
    Par défaut ne s'agit il pas d'un bug dans access2002?
    Lors de l’exécution de ma requête analyse croisé , j’obtiens ce message d’erreur :
    Le moteur de base de donnée ne reconnaît pas commande.client en tant que nom de champ ou expression correcte.
    Cette requête est basée sur la requête 3.
    je vais essayer de vous montrer mes requêtes:
    La 1er requête contient 3 colonnes, la 1er colonne représente les clients, la 2èmer colonne représente les mois, la 3ème les montants de commandes. La 2ème requête contient aussi 3 colonnes, la 1er colonne représente les clients , la 2ème représente les mois, la 3ème représente les réductions sur les montants de commandes.

    Requête n°1 : commande
    Client Mois Somme1
    X1 1 20
    X1 2 20
    X2 3 20
    X2 4 20

    Requête n°2 : réd_commande
    Client Mois somme2
    X1 1 10
    X2 3 10

    J’ai fais une requête basé sur ces 2 requêtes qui permet de calculer la différence des montants entre les 2 requêtes. Le résultat est :

    Citation:
    Requête3 : commande_réduction
    Client Mois sommefinale
    X1 1 10
    X1 2 20
    X2 3 10
    X2 4 20

    Mes requêtes 1 et 2 sont générées par l’assistant. Pour la requête 3 , elle est générée par le code sql suivant :
    SELECT commande.Client, commande.mois, ( [commande].[somme1]-NZ((Select [somme2] from réd_commande where commande.Client= réd_commande.Client and commande.mois= réd_commande.mois),0)) AS sommefinale
    FROM commande;

    Puis, j’ai fais une requête analyse croisée à partir de la requête 3, le code est le suivant : (je l'ai obtenu à l'aide de l'assistant)
    Code:
    TRANSFORM Sum(commande_réduction.sommefinale) AS SommeDesommefinale
    SELECT commande_réduction.Client, Sum(commande_réduction.sommefinale) AS [Total de sommefinale]
    FROM commande_réduction
    GROUP BY commande_réduction.Client
    PIVOT commande_réduction.mois;

    Mais j’obtiens toujours le message suivant :
    Le moteur de base de donnée ne reconnaît pas commande.client en tant que nom de champ ou expression correcte

  2. #2
    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 Re: ne s'agit il pas d'un bug dans access2002?
    Bonjour,
    Je ne savais pas que Jet accepte cette syntaxe de sous-requête (le SELECT comme paramètre de la fonction NZ) ...
    Voilà qui est intéressant .
    Citation Envoyé par Meryemou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT commande.Client, commande.mois, ( [commande].[somme1]-NZ((Select [somme2] from réd_commande where commande.Client= réd_commande.Client and commande.mois= réd_commande.mois),0)) AS sommefinale 
    FROM commande;
    Cependant, je te suggère de passer à une requête plus "classique" en utilisant une jointure externe entre les 2 premières requêtes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT commande.Client, commande.Mois, [commande].[Somme]-nz([réd_commande].[somme2],0) AS sommefinale
    FROM commande LEFT JOIN réd_commande ON (commande.Mois = réd_commande.Mois) AND (commande.Client = réd_commande.Client);
    Que tu transformeras ensuite aisément en requête analyse croisée:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    TRANSFORM Sum([commande].[Somme]-nz([réd_commande].[somme2],0)) AS sommefinale
    SELECT commande.Client
    FROM commande LEFT JOIN réd_commande ON (commande.Mois = réd_commande.Mois) AND (commande.Client = réd_commande.Client)
    GROUP BY commande.Client
    PIVOT commande.Mois;

  3. #3
    Candidat au Club
    Inscrit en
    Décembre 2005
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 12
    Points : 4
    Points
    4
    Par défaut
    Merci infiniment JBO pour ton aide. Ta méthode marche très bien!.

Discussions similaires

  1. [OpenGL 2.x] bug ou pas bug dans GL_POLYGON
    Par yann458 dans le forum OpenGL
    Réponses: 3
    Dernier message: 12/01/2015, 06h22
  2. un bug dans le code (1+1=3 et non pas 1+1=1)
    Par frp31 dans le forum Humour Informatique
    Réponses: 22
    Dernier message: 24/03/2012, 01h33
  3. loadvar et onload, là je vois pas pourquoi ça bug!
    Par pierrickg dans le forum ActionScript 1 & ActionScript 2
    Réponses: 5
    Dernier message: 23/08/2009, 12h59
  4. [XL-2000] Comment ne pas avoir de bug en ne voulant pas enregistrer un fichier déjà existant
    Par Avinetor dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 05/06/2009, 17h40
  5. Graphique n'est pas mis à jour. Bug microsoft
    Par mathieu7497 dans le forum Excel
    Réponses: 3
    Dernier message: 20/03/2008, 17h58

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