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 avec affichage de colonne [AC-365]


Sujet :

Requêtes et SQL.

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Février 2022
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs

    Informations forums :
    Inscription : Février 2022
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Requête avec affichage de colonne
    Bonjour à tous,

    Avec ma collègue, nous sommes entrain de développer une base de données piscicole sur nos protocoles de pêche.
    Nous avons plusieurs tables :

    > Données de capture
    > Probabilité
    > Protocole
    > Résultat IPR
    > Stations

    En logique, voici comment cela fonctionne.
    >> Un protocole est mis en place pour une pêche.
    >> Cette pêche se réalise dans une station
    >> Dans cette station, nous avons des données de capture
    >> Cela donne un résultat IPR et des probabilités etc...

    Dans les données de capture, voici l'architecture :
    - Clé primaire
    - Clé du protocole
    - Code TAXON (nom des espèces des poissons)
    - Effectifs
    - Poids
    - Taille

    Sur un protocole, nous pouvons avoir plusieurs espèces (TAXON).

    L'idée, et donc notre problématique est la suivante :
    Nous souhaiterions avoir une requête (ou un état ?) sur la station avec les différentes pêche réalisées au fil des ans.

    Exemple :

    Sur la rivière ...
    > en 2021 : 5 Brochets ; 3 Aspes ; 4 Chabots ... 0 XXXXXXXX
    > en 2020 : 0 Brochet ; 2 Aspes ; 0 Chabot ; 1 Vandoise ; ... 0 XXXXXXXXX

    Mais le hic est qu'il y a une multitude d'espèces et qu'on souhaiterait uniquement les espèces non vides (supérieur à zéro), hélas, nous n'arrivons pas à schématiser cela.
    Auriez-vous une idée ?

    Merci par avance.
    Cordialement,

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    Où se trouve l'info stations dans tes données ?

    Et pour faire ce que tu veux le plus simple est de faire une requête d'analyse croisée dynamique.
    Tu vas obtenir quelque chose comme :

    Année Espèce A Espèce B
    2020 1
    2201 2

    Certe si une espèce n'est pas présente une année tu vas avoir une colonne vide pour cette année mais c'est vachement plus simple et facile à vivre.

    Si tu tiens à avoir la structure que tu décris alors il faut faire du code VBA.
    Ce n'est pas super compliqué mais cela va être probablement plus lent et les données obtenues seront sans doute difficiles à exploiter.

    Voici une solution possible :

    Faire une requête de regroupement par année et espèces, triée par année et espèce.

    Crée une table pour stocker les résultats :
    tblResultat
    Annee (Entier long ou Entier)
    Decompte (Texte Long)

    Utiliser ensuite le code VBA suivant.

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    public sub CompterPoisson()
       dim db as dao.database:set db=currentdb
     
       call db.execute("delete tblResult.* from tblResult", dbFailOnError) 'vide la table de résultat
     
       dim source as dao.recordset:  set result=db.openrecordset("qryComptagePoisson")
       dim result as dao.recordset: set result=db.openrecordset("tblResultat")
       dim memAnnee as long: memAnnee=-1
       dim decompte as string
     
       do while not source.eof()
     
           if memAnnee<>source![Annee] and memAnnee <> -1 then
                'Enregistre les résultats pour l'année
                result.add
                result![Annee]=memAnnee
                result![Decompte]=decompte
                result.update
     
                decompte=""
                memAnnee = source![Annee]
           end if
     
           if  decompte <> "" then
              'Ajoute le séparateur
              decompte=decompte & ";"
           end if
     
           decompte=decompte & source![Taxon] & ":" & source![Decompte]
     
           source.movenext
       loop
     
       if memAnnee <> -1 then
           'Enregistre les résultats pour la dernière année
           result.add
           result![Annee]=memAnnee
           result![Decompte]=decompte
           result.update
      end if
     
       result.close: set result=nothing
       source.close: set source=nothing
       db.close: set db=nothing
    end sub
    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Février 2022
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs

    Informations forums :
    Inscription : Février 2022
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Bonjour marot_r !

    Merci à toi pour ta réponse et ta solution !
    Ca fonctionne super ! Nous n'avions pas en connaissance la requête d'analyse croisée dynamique.

    Problème résolu grâce à toi.
    Merci beaucoup.

    Bonne journée.

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

Discussions similaires

  1. [AC-2010] requête avec lignes et colonnes
    Par létudiant_access dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 29/01/2012, 12h49
  2. Rapidité requête avec where ou colonne additionnelle
    Par Marc_L dans le forum Développement
    Réponses: 15
    Dernier message: 24/05/2011, 19h38
  3. Requête avec nom de colonne intégrant une variable
    Par pentoneal dans le forum PL/SQL
    Réponses: 6
    Dernier message: 19/10/2009, 14h48
  4. Requête avec exclusion de colonnes
    Par lemfi dans le forum Langage SQL
    Réponses: 8
    Dernier message: 31/01/2008, 13h38
  5. [Oracle] Requête avec colonne optionnelle
    Par Original Prankster dans le forum Langage SQL
    Réponses: 6
    Dernier message: 30/08/2005, 09h24

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