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 :

Requête d'analyse croisée


Sujet :

Requêtes et SQL.

  1. #1
    Membre du Club
    Inscrit en
    Février 2008
    Messages
    110
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 110
    Points : 41
    Points
    41
    Par défaut Requête d'analyse croisée
    Alors après une journée de recherche sur les tutaux, forums et autre google je n'ai rien trouver et cela devient très très urgent

    Donc je vous explique j'utilise une requête d'analyse croisée afin d'afficher le détails d'un stock

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT [Parametre pers_Analyse croisée].Désignation, [Parametre pers_Analyse croisée].Taille, [Parametre pers_Analyse croisée].Type, [Parametre pers_Analyse croisée].Quantité, Nz([En stoc],0) AS Stoc, Nz([Dejadonne],0) AS Donné, [Quantité]-Nz([En Stoc],0)-Nz([Dejadonne],0) AS Diff
     
    FROM ([Parametre pers_Analyse croisée] LEFT JOIN [A rendre_Analyse croisée] ON ([Parametre pers_Analyse croisée].Désignation = [A rendre_Analyse croisée].Désignation) AND ([Parametre pers_Analyse croisée].Taille = [A rendre_Analyse croisée].Taille) AND ([Parametre pers_Analyse croisée].Type = [A rendre_Analyse croisée].Type)) LEFT JOIN [A donner_Analyse croisée] ON ([Parametre pers_Analyse croisée].Type = [A donner_Analyse croisée].Type) AND ([Parametre pers_Analyse croisée].Taille = [A donner_Analyse croisée].Taille) AND ([Parametre pers_Analyse croisée].Désignation = [A donner_Analyse croisée].Désignation)
     
    GROUP BY [Parametre pers_Analyse croisée].Désignation, [Parametre pers_Analyse croisée].Taille, [Parametre pers_Analyse croisée].Type, [Parametre pers_Analyse croisée].Quantité, Nz([En stoc],0), Nz([Dejadonne],0), [Quantité]-Nz([En Stoc],0)-Nz([Dejadonne],0)
     
    ORDER BY [Parametre pers_Analyse croisée].Désignation, [Parametre pers_Analyse croisée].Taille, [Parametre pers_Analyse croisée].Type;
    Cependant cette requête utilise, celle-ci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    TRANSFORM Count([A donner].ID_Vetement) AS CompteDeID_Vetement
    SELECT [A donner].Désignation, [A donner].Taille, [A donner].Type
    FROM [A donner]
    GROUP BY [A donner].Num_Typ, [A donner].Désignation, [A donner].Taille, [A donner].Type
    PIVOT "Dejadonne";
    Ces deux requêtes fonctionnent très bien mais le seul souci est que quand il n'y a aucun résultat dans la seconde requête, c'est à dire pas de champs Dejadonne, ma requête d'analyse croisée ne fonctionne pas. En revanche, s'il y a même qu'une seule ligne, elle marche parfaitement... Le message d'erreur est le suivant :

    "Le moteur de la base de données Microsoft Jet ne reconnaît pas '[Dejadonne]' en tant que nom de champ ou expression correct"

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 365
    Points : 23 835
    Points
    23 835
    Par défaut
    Peux-tu générer des données fictives neutres qui feraient en sorte qu'il y ai toujours des données ?

    J'ai fait cela pour un état des ventes par mois, parfois je n'avais pas de vente dans un mois mais comme je créais toujours une vente à 0 pour tous les mois de l'année il ne manquait jamais un mois dans pour mes stats.

    A+

  3. #3
    Membre du Club
    Inscrit en
    Février 2008
    Messages
    110
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 110
    Points : 41
    Points
    41
    Par défaut
    Comment faire pour générer ces données fictives ? J'y avais en effet pensé mais je n'ai pas trouver comment faire...

  4. #4
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 365
    Points : 23 835
    Points
    23 835
    Par défaut
    J'ai un collègue qui a créé une table temporaire et qui a ensuite ajouté ces données dans cette table.

    Moi j'avais ajouté mes lignes fictives à ma tabe de vente.

    Je ne connais pas ton appli mais je sugérerai de remplacer ta seconde requête qui bug par un select sur une table temporaire dans ta requête principale et de remplir ta table temporaire avec ta seconde requête.

    Donc cela reviendrai à faire :

    1) Vider ta table temporaire
    2) Remplir ta table temporaire avec les données de la seconde requête
    3) Compléter la table temporaire avec des données fictives si nécessaire
    4) Faire ta requête principale qui utilise la table temporaire en lieu et place de la requête.

    Évidement il faut que tu fasses bien attention à ce que les données de la table temporaire soient à jour AVANT d'ouvrir ta requête principale.

    A+

  5. #5
    Membre du Club
    Inscrit en
    Février 2008
    Messages
    110
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 110
    Points : 41
    Points
    41
    Par défaut
    Merci de ton aide mais je ne comprends vraiment pas grand chose... Aurais tu une ad mail ou msn pour que je t'envois mon appli afin d'en voir un peu plus

  6. #6
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 365
    Points : 23 835
    Points
    23 835
    Par défaut
    Non, malheureusement pas les politiques de sécurité de mon entreprise ne m'autorise pas à faire cela.

    Qu'est-ce que tu ne comprends pas ?

    Le concept de table temporaire ?

    L'ajout de données fictives ?

    Les modifications nécessaires dans ton appli ?

    Toutes ces réponses ? Aucune de ces réponse ? :-)

    Quel est ton niveau de connaissance d'Access ?

    A+

  7. #7
    Membre du Club
    Inscrit en
    Février 2008
    Messages
    110
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 110
    Points : 41
    Points
    41
    Par défaut
    Tu n'as pas d'ad personelle...
    Mon niveau est assez faible...
    ¨
    Pour moi, je pense qu'il faut juste rajouter des données fictives comme écrit plus haut... style une ligne avec que des zéros.... mais je ne vois pas du tout comment faire

  8. #8
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 365
    Points : 23 835
    Points
    23 835
    Par défaut
    J'ai une adresse perso mais chez moi je n'ai pas Access.

    Pour pouvoir t'aider plus efficacement j'ai besoin de savoir quel est ton niveau en Access.

    Peux-tu me résumer les données croisées qui sont générées par ta requête principale et celle de ta requête secondaire (nom des colonnes, lignes) ?

    A+

  9. #9
    Membre du Club
    Inscrit en
    Février 2008
    Messages
    110
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 110
    Points : 41
    Points
    41
    Par défaut
    Je t'ai dit j'ai un niveau très très faible

    Ma requête secondaire se décompose comme cela :

    Désignation Taille Type DejaDonné
    Blouson 4 R 14
    Blouson 2 L 2
    Chemise XL - 3


    Et dans ma requete principale (pour mon état je reprend juste les données de cette requete)

    Désignation Taille Type Qté_Néc En Stock Donné A Commandé
    Blouson 4 R 20 12 14 -6
    Blouson 2 L 12 3 2 7
    Chemise XL - 13 4 3 6

    Voilà mes deux requêtes fonctionnent à condition qu'il y a au moins une ligne dans ma requete secondaire... J'espere que c clair...

  10. #10
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 365
    Points : 23 835
    Points
    23 835
    Par défaut
    Comme tu débutes je vais être assez directif :-).

    Ce que nous allons faire c'est ajouter systématiquement un élément à ta seconde requête sans faire de grosses modifs par ailleur.

    Pour commencer faits une copie de sauvegarde de ta base actuelle.

    Crée une nouvelle table qui a la même structure que le resultat de la requête secondaire (je vais l'appeler ElementFictif mais tu peux mettre ce qui te plais) :

    • Désignation
    • Taille
    • Type
    • DejaDonné


    Dans cette table tu vas ajouter un élément fictif :

    • Désignation = "Pas un article"
    • Taille = "S"
    • Type = Ce qui a du sens pour toi
    • DejaDonné = Ce qui a du sens pour toi


    maintenant tu vas créer un nouvelle requête, puis tu vas aller dans le menu requête, choisir spécifique SQL puis dans ce sous menu Union.

    Tape ensuite

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    select [NomDeTaRequeteSecondaire].* from [NomDeTaRequeteSecondaire]
    union
    select [ElementFictif].* from [ElementFictif];
    Affiche le résultat, ce doit être les lignes de ta requête secondaire ET la ligne "Pas un article".

    Appèle cette requête par exemple "rElementEtElementFictif"

    Ensuite modifie ta requête principale pour qu'elle utilise rElementEtElementFictif à la place de ta requête secondaire.

    Si "Pas un article" te pose un pb essaye de ne mettre qu'un texte blanc.

    A+

  11. #11
    Membre du Club
    Inscrit en
    Février 2008
    Messages
    110
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 110
    Points : 41
    Points
    41
    Par défaut
    Le problème c'est que je t'ai simplifié le truc... Il y a des numéros de vêtements, etc....... Pfff, c'est complexe...

    Bon j'essaierai demain matin...

  12. #12
    Membre du Club
    Inscrit en
    Février 2008
    Messages
    110
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 110
    Points : 41
    Points
    41
    Par défaut
    Cela me paraît bon

    Le seul souci c'est que lorsque je n'ai pas encore affecté quelque chose... Dans ma requête secondaire, la colonne [DejaDonne] n'apparaît pas. Il me met donc un message comme quoi il n'y a pa le meme nb de colonne dans le requete Union

  13. #13
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 365
    Points : 23 835
    Points
    23 835
    Par défaut
    OK, alors cette solution n'est pas la bonne et en plus tu vas avoir des problèmes à l'impression. Access n'aime vraiment pas quand la structure des données est variable.

    Il faut que tu trouve un moyen d'enrichir la source de ta seconde requête avec des données bidons (ex : crée un acticle fictif, fait un truc qui vaut 0 et qui ne fausse pas tes stat ... bref trouve ce qu'en math on appèle un élément neutre).

    A+

  14. #14
    Membre du Club
    Inscrit en
    Février 2008
    Messages
    110
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 110
    Points : 41
    Points
    41
    Par défaut
    Il n'y a pas d'impressions à programmer car dans mon état je fais moi meme un tri...

    J'ai tenté de passer par un autre chemin mais un autre problème subsiste :

    http://www.developpez.net/forums/sho...25#post2967125

    si tu peux m'aider...

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

Discussions similaires

  1. Requête pour cumuler une requête d'analyse croisée
    Par helouadi dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 24/10/2007, 16h00
  2. Requête d'analyse croisée + VBA
    Par sophiesallee dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 31/08/2007, 10h02
  3. Union de 2 requêtes d'analyse croisée
    Par Bqrt37 dans le forum Requêtes et SQL.
    Réponses: 10
    Dernier message: 27/06/2007, 09h20
  4. Problème dans requête pour analyse croisée
    Par benjisan dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 14/06/2007, 09h54
  5. Etat issu d'une requête d'analyse croisée
    Par loutsky dans le forum Access
    Réponses: 3
    Dernier message: 18/03/2006, 16h19

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