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 :

Aide pour une requete style tableau croisé dynamique


Sujet :

Requêtes et SQL.

  1. #1
    Membre averti
    Homme Profil pro
    Sapeur pompier
    Inscrit en
    Février 2008
    Messages
    442
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Sapeur pompier
    Secteur : Service public

    Informations forums :
    Inscription : Février 2008
    Messages : 442
    Points : 416
    Points
    416
    Par défaut Aide pour une requete style tableau croisé dynamique
    Bonjour,

    J'ai une requête relatant toutes les dernières formations par stagiaire et type de formation et je souhaiterai avoir un tableau qui aurait le nom du stagiaire, une colonne formation X, une autre formation y... dans lesquels il y aurait les dates des formations.
    J'ai du mal a m'exprimer (ça doit être les vacances), donc je vous donne un exemple en espérant que ce soit plus parlant.

    Requête qui donne les dernières dates de formation par stagiaire et type de formation :

    Type formation DER Date stagiaire
    SST 23/08/2017 Pierre
    EPI 15/09/2016 Ben
    SST 23/08/2017 Paul
    ELEC 01/02/2016 Ben
    EPI 15/09/2016 Pierre
    SST 23/08/2017 Jacques
    ELEC 01/02/2016 Jacques


    Tableau des résultats escomptés dans le formulaire :
    Stagiaire Date SST Date ELEC Date EPI
    Pierre 23/08/2017 15/09/2016
    Paul 23/08/2017
    Jacques 23/08/2017 01/02/2016
    Ben 01/02/2016 15/09/2016

    Je ne vois pas comment orienter ma requête, pouvez vous m'aider afin que je puisse sortir le résultat escompté.

    Merci par avance

    Bonne journée

    Sebing
    Débutant, j’essaie de m’améliorer en essayant d'aider sur le forum
    Merci d’être indulgent sur le code ou réponse proposé je reçois volontiers les critiques qui me feront progresser, mais aussi un (ça fait toujours plaisir de savoir que l on a pu dépanner une personne ).

  2. #2
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 759
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 759
    Points : 14 793
    Points
    14 793
    Par défaut
    Bonjour,
    à la ligne Opérations il faut mettre [Stagiaire] et [Type formation] en "Regroupement" et [Date formation] en "Premier", "Min" ou "Max" (peu importe)
    à la ligne Analyse il faut mettre [Stagiaire] en "En-tête de ligne", [Type formation] en "En-tête de colonne" et [Date formation] en "Valeur"
    En SQL, cela doit donner quelque chose comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    TRANSFORM First(Formations.Date_formation) AS PremierDeDate_formation
    SELECT Formations.Stagiaire
    FROM Formations
    GROUP BY Formations.Stagiaire
    PIVOT "Date " & [Type_formation];
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  3. #3
    Membre averti
    Homme Profil pro
    Sapeur pompier
    Inscrit en
    Février 2008
    Messages
    442
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Sapeur pompier
    Secteur : Service public

    Informations forums :
    Inscription : Février 2008
    Messages : 442
    Points : 416
    Points
    416
    Par défaut
    Merci tee_grandbois, ça fonctionne

    Cordialement

    sebing
    Débutant, j’essaie de m’améliorer en essayant d'aider sur le forum
    Merci d’être indulgent sur le code ou réponse proposé je reçois volontiers les critiques qui me feront progresser, mais aussi un (ça fait toujours plaisir de savoir que l on a pu dépanner une personne ).

  4. #4
    Membre averti
    Homme Profil pro
    Sapeur pompier
    Inscrit en
    Février 2008
    Messages
    442
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Sapeur pompier
    Secteur : Service public

    Informations forums :
    Inscription : Février 2008
    Messages : 442
    Points : 416
    Points
    416
    Par défaut
    Bonjour,

    La requête fonctionne mais lorsque je l'incorpore dans un sous formulaire, j'ai un message d'erreur :
    Avant de lier un sous formulaire ou SE à une requête analyse croisée définissez la propriété en tête de colonne de la requête
    J'ai fait des recherches sur internet et je ne comprends pas trop ca qu'il faut faire pour palier ce bug.

    Pouvez vous m'éclairer SVP.

    Merci

    Bonne journée

    Sebing
    Débutant, j’essaie de m’améliorer en essayant d'aider sur le forum
    Merci d’être indulgent sur le code ou réponse proposé je reçois volontiers les critiques qui me feront progresser, mais aussi un (ça fait toujours plaisir de savoir que l on a pu dépanner une personne ).

  5. #5
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 759
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 759
    Points : 14 793
    Points
    14 793
    Par défaut
    bonjour,
    Avant de lier un sous formulaire ou SE à une requête analyse croisée définissez la propriété en tête de colonne de la requête
    peux-tu me poster le code de la requête ?
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  6. #6
    Membre averti
    Homme Profil pro
    Sapeur pompier
    Inscrit en
    Février 2008
    Messages
    442
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Sapeur pompier
    Secteur : Service public

    Informations forums :
    Inscription : Février 2008
    Messages : 442
    Points : 416
    Points
    416
    Par défaut
    Voici ma sous requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    TRANSFORM First(rqt_formation_stagiaire.date_fin) AS PremierDeDate_formation
    SELECT rqt_formation_stagiaire.N°, rqt_formation_stagiaire.num_stagiaire, rqt_formation_stagiaire.stagiaire
    FROM rqt_formation_stagiaire
    GROUP BY rqt_formation_stagiaire.N°, rqt_formation_stagiaire.num_stagiaire, rqt_formation_stagiaire.stagiaire
    PIVOT "Date " & [rqt_formation_stagiaire.theme_prestation];
    Merci encore

    Bonne soirée

    Sebing
    Débutant, j’essaie de m’améliorer en essayant d'aider sur le forum
    Merci d’être indulgent sur le code ou réponse proposé je reçois volontiers les critiques qui me feront progresser, mais aussi un (ça fait toujours plaisir de savoir que l on a pu dépanner une personne ).

  7. #7
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 759
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 759
    Points : 14 793
    Points
    14 793
    Par défaut
    la requête est correcte, même si on ne vois pas le contenu de la sous-requête rqt_formation_stagiaire.
    Malheureusement, je ne vois pas quel pourrait être le souci dans le sous-formulaire.
    Je peux juste dire qu'il faut considérer qu'une analyse croisée dynamique contient des colonnes dynamiques (theme_prestation), il faut donc faire attention lorsque qu'une nouvelle colonne apparait dans la requête de ne pas oublier de l'ajouter dans le sous-formulaire.
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  8. #8
    Membre averti
    Homme Profil pro
    Sapeur pompier
    Inscrit en
    Février 2008
    Messages
    442
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Sapeur pompier
    Secteur : Service public

    Informations forums :
    Inscription : Février 2008
    Messages : 442
    Points : 416
    Points
    416
    Par défaut
    Merci pour l'analyse
    Donc si je ne mets pas toutes les colonnes j'aurai une erreur.
    C'est peut être de la que provient le bug, je regarderai demain.

    Merci encore

    Bonne soirée

    Sebing
    Débutant, j’essaie de m’améliorer en essayant d'aider sur le forum
    Merci d’être indulgent sur le code ou réponse proposé je reçois volontiers les critiques qui me feront progresser, mais aussi un (ça fait toujours plaisir de savoir que l on a pu dépanner une personne ).

  9. #9
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 759
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 759
    Points : 14 793
    Points
    14 793
    Par défaut
    Citation Envoyé par sebing Voir le message
    Merci pour l'analyse
    Donc si je ne mets pas toutes les colonnes j'aurai une erreur.
    ce n'est pas ce que j'ai dit. Cela génèrera une erreur uniquement si une colonne n'existe pas au moment où on ouvre le formulaire.
    Une requête analyse croisée s'appuie sur la valeur d'une colonne pour en créer d'autres, donc elle peut variable (dynamique) selon le résultat de la requête et il peut être délicat, voire compliqué de vouloir afficher le résultat de ce type de requête à partir d'un formulaire, sauf en créant dynamiquement les colonnes (faisable en VBA mais pas si simple).
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  10. #10
    Membre averti
    Homme Profil pro
    Sapeur pompier
    Inscrit en
    Février 2008
    Messages
    442
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Sapeur pompier
    Secteur : Service public

    Informations forums :
    Inscription : Février 2008
    Messages : 442
    Points : 416
    Points
    416
    Par défaut
    Après vérification, l''erreur ne provient pas du nombre de colonnes.

    Voici le code de la sous requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT clients.N°, stagiaires.N° AS num_stagiaire, [nom] & " " & [prenom] AS stagiaire, prestations.theme_prestation, prestations.prestation, presta_formations.date_fin
    FROM clients INNER JOIN (prestations INNER JOIN (stagiaires INNER JOIN (presta_formations INNER JOIN stagiaires_prestations ON presta_formations.N_presta_f = stagiaires_prestations.id_prestation) ON stagiaires.N° = stagiaires_prestations.id_stagiaire) ON prestations.N_presta = presta_formations.id_prestation) ON clients.N° = stagiaires.id_clients
    ORDER BY [nom] & " " & [prenom];
    Je vais faire des recherches pour créer dynamiquement les colonnes via le VBA.

    Merci encore

    sebing
    Débutant, j’essaie de m’améliorer en essayant d'aider sur le forum
    Merci d’être indulgent sur le code ou réponse proposé je reçois volontiers les critiques qui me feront progresser, mais aussi un (ça fait toujours plaisir de savoir que l on a pu dépanner une personne ).

  11. #11
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 759
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 759
    Points : 14 793
    Points
    14 793
    Par défaut
    Après vérification, l''erreur ne provient pas du nombre de colonnes.
    je tiens à signaler encore une fois que mon alerte concernant le nombre de colonnes était juste une mise en garde, pas une cause possible de l'erreur.

    Je vais faire des recherches pour créer dynamiquement les colonnes via le VBA.
    Peut-être une solution possible ici et sans VBA.
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

Discussions similaires

  1. Besoin d'aide pour une requete
    Par jnc dans le forum Langage SQL
    Réponses: 5
    Dernier message: 06/07/2005, 11h54
  2. aide pour une requete
    Par graphicsxp dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 29/03/2005, 15h02
  3. Aide pour une requete SQL
    Par hpghost dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 08/01/2005, 15h01
  4. Aide pour une requete SQL
    Par hpghost dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 08/01/2005, 10h15
  5. Aide pour une requete ... "COUNT(*)"
    Par mechantebestiole dans le forum Langage SQL
    Réponses: 13
    Dernier message: 25/05/2004, 16h27

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