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 : tri via une table de lien sur le champ "En-tête de colonne" [AC-2003]


Sujet :

Requêtes et SQL.

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Analyste marketing
    Inscrit en
    Juin 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste marketing
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2013
    Messages : 6
    Points : 5
    Points
    5
    Par défaut Requête d'analyse croisée : tri via une table de lien sur le champ "En-tête de colonne"
    Bonjour à tous,

    Je travaille depuis peu sur ACCESS (version 2003 en +), mais je pense que je progresse assez vite en toute autonomie. Cependant je vous sollicite car ça fait déjà 2,5 jours que je me triture l'esprit sans pour autant trouver la solution >_< même en fouillant dans les forums et en demandant dans mon entourage... (peut-être que je ne mets pas les bons mots clefs, mais bon j'en ai essayé pas mal).

    Du coup j'explique ce que je veux faire :
    Mon existant (le fichier ACCESS ci-joint)
    j'ai une base de données "BDD_donnee" qui est composée de 3 variables :
    - "tranche_age",
    - "tranche_anciennete",
    - "Nombre" (sur laquelle je peux faire mes analyses statistiques).
    j'ai 2 tables de liens qui me permettent de mettre un ordre spécifique d'affichage des 2 variables correspondantes :
    - "ordre_tranche_age" (pour ordonner les tranches d'âges spécifiquement)
    - "ordre_tranche_anciennete" (pour ordonner les tranches d'ancienneté spécifiquement)
    Mon but (requête "BDD_donnee_analyse_croisee")
    faire un tableau croisé (via une requête croisée) avec les 2 champs d'analyses :
    - "tranche_anciennete" en ligne ordonné via l'ordre donné dans la table de lien associée (j'y arrive ),
    - "tranche_age" en colonne ordonné via l'ordre donné dans la table de lien associée (je n'y arrive pas ),
    sans donner des instructions manuelles propres à cette étude car si on retouche les tranches ou qu'on les renommes etc... il ne faut pas retoucher toutes les requêtes, mais juste la table de lien associée !
    Mes pistes étaient :
    - trier ma base de donnée de départ (ou de travail) comme il fallait : ça ne marche pas
    - faire plusieurs instructions PIVOT successives dans le code SQL associé : à tester + en profondeur car jusqu'à présent je n'y suis pas arrivé,
    - faire plusieurs instructions SELECT successives dans le code SQL associé : à tester + en profondeur car jusqu'à présent je n'y suis pas arrivé,

    Si jamais quelqu'un a déjà été confronté à cette problématique, et qu'en + il peut me trouver le code SQL qui solutionne ceci, ça serait super !
    Merci par avance.

    Bien à vous tous,

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 353
    Points : 23 819
    Points
    23 819
    Par défaut
    Autant que je sache à part en précisant les entêtes de colonnes manuellement, Access tri tes colonnes dans l'ordre des données trouvées.

    Donc soit tu génère le SQL de ta requête croisée par programme en ajoutant les entêtes dans l'ordre que tu veux.

    Soit tu substitues tes valeurs par leur correspondance de tri (suppose une liaison 1 pour 1 sans ambiguité) et tu utilises un formulaire qui remplace les valeur d'ordre par les valeurs voulue à l'affichage.

    Example :

    TableOrdre:
    Ordre, Valeur.

    ex :

    • 3, A
    • 1, B
    • 2, C


    Tu obtiens dans ta requête croisée :

    Entête | 1 | 2 | 3 |

    Dans ton formulaire au moment du chargement ou de l'ouverture (voir lequel fonctione) tu mets quelque chose comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    dim f as dao.fields : for each f in me.recordset.fields
     
       if f.name<>"Entête" then
          me.controls("Etiquette" & f.name)=dFirst("Valeur", "TableOrdre", "[Ordre]=" & f.name)
       end if
     
    next f
    En supposant que tes entêtes de colonne s'appellent Etiquette1, Etiquette2, Etiquette3.

    À l'affichage tu as :

    Entête | B | C | A |

    A+

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Analyste marketing
    Inscrit en
    Juin 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste marketing
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2013
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Bonjour marot_r,

    Avant tout pour ta réponse , c'est une solution en effet, cependant je n'ai pas de formulaires associés .
    En fait je ne suis que sur des tables et requêtes ACCESS 2003.
    Du coup, est-il possible de faire pareil sans passer par des formulaires ni macro ? Juste du code SQL ?

    Si tel est le cas, alors ça répondrait parfaitement à ma problématique

    Du coup en attendant je continue sur mes pistes à tester + en profondeur car jusqu'à présent je n'y suis pas arrivé :
    - faire plusieurs instructions PIVOT successives dans le code SQL associé,
    - faire plusieurs instructions SELECT successives dans le code SQL associé.

    En tout cas j'ai déjà du code si je passe par les formulaires

    A+

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Analyste marketing
    Inscrit en
    Juin 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste marketing
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2013
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Eureka
    J'ai trouvé qu'en rajoutant l'instruction In ("nom étiquette 1", "nom étiquette 2", "nom étiquette 3", "nom étiquette 4", etc...) juste après mon instruction PIVOT, j'arrive également à mes fins

    Merci pour le temps consacré et à bientôt peut-être

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 10/12/2012, 12h20
  2. Requête d'analyse croisée insérée dans une ListView
    Par moirs555 dans le forum VB 6 et antérieur
    Réponses: 0
    Dernier message: 10/10/2011, 11h44
  3. Arrondis faux sur requêtes analyse croisée et création de table
    Par Banban52 dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 28/07/2007, 10h07
  4. 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
  5. [Requête] Tri via une liste déroulante
    Par Burnout dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 09/01/2006, 18h16

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