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 :

Concaténer des champs, sous conditions


Sujet :

Requêtes et SQL.

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    362
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 362
    Points : 132
    Points
    132
    Par défaut Concaténer des champs, sous conditions
    Bonjour à tous (re pour certains )
    Une dernière requête avant les vacances, si vous voulez bien !
    Je dispose d'un tableau (dernière années d'observations d'espèces par communes) sous cette forme (en réalité, une requête) :

    COMMUNE SP1 SP2 SP3 SPn
    COMMUNE A 2010 2000
    COMMUNE B 2010
    COMMUNE C 2000 2010

    J'aimerai, afin de réaliser un export, synthètiser les données par communes dans une même champ, sous cette forme :

    COMMUNE SYNTHESE
    COMMUNE A SP2:2010 ; SPn:2000
    COMMUNE B SPn:2010
    COMMUNE C SP1:2000 ; SP2:2010

    Sur excel (que je maîtrise un peu plus), je ferais une formule du syle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SI(VALEUR_SP1<> "" ; NOM_DU_CHAMP_SP1 & ":" & VALEUR_SP1 & ";") & SI(VALEUR_SP2<> "" ; NOM_DU_CHAMP_SP2 & ":" & VALEUR_SP2 & ";") & ...
    J'essaye de convertir ça en SQL, mais pour l'instant, ça marche pas...

    Est-ce bien sous la forme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IIf([SP1] is not null,"SP1:"&[SP1]&";","") & IIf([SP2] is not null,"SP2:"&[SP2]&";","") & ...
    Suis-je sur la bonne piste ?
    (je précise que j'ai une centaine d'espèces, mais que suis en mesure de multiplier la formule pour 1 espèce automatiquement).

    Merci pour vos conseils.

    Sylvain M.

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    362
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 362
    Points : 132
    Points
    132
    Par défaut
    Bon, excusez moi pour la demande, je viens de trouver tout seul : je m'étais mélangé les pinceaux entre les "," et les ";", qui diffèrent entre le mode création et SQL (et Excel).
    Ca marche, finalement !
    Mais peut-être quelqu'un a-t-il une méthode qui m'éviterait d'écrire les conditions pour chaque espèce ?

  3. #3
    Membre régulier
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Janvier 2014
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Janvier 2014
    Messages : 64
    Points : 94
    Points
    94
    Par défaut
    Salut
    A-t-on le droit a deux doigts de programmation en VBa Access ?
    Si oui, je verrai bien un truc du genre :

    ----------------------------------------------------------
    ouverture de la table de donnees pour une lecture enregistrement 'commune' par enregistrement 'commune'
    ouverture de la table de synthese pour ecriture

    Pour tous les enregistrements donnees ' commune par commune >> while not eof

    initialiser une variable chaine a vide
    pour tous les champs de l'enregistrement de details ' for each field in

    si le champ n'est pas vide ' if not isnull ou if = ""
    chaine = chaine & ";" & nomduchamp & " " & valeur du champ ' nomduchamp avec field.name
    finsi
    boucler champ suivant 'next field
    ecrire le nom de la commune dans le champ commune, la variable chaine dans le champ synthese
    ecrire l'enregistrement de synthese
    boucler commune suivante ' next commune / wend

    fermer les tables
    ----------------------------------------------------------------

    Bon, d'accord, ce n'est pas une requete
    mais les avantages sont nombreux :
    -le programme gere autant que champs que necessaires, meme si on ajoute de nouveaux, sans toucher au code
    -A priori plus rapide
    -possibilite de gerer sans probleme (juste en ajoutant le code necessaire), des groupes de champs pour des etats de synthese differents
    -ce n'est pas plus difficile de lancer un module que d'executer une requete

    en cas de besoin, ne pas hesiter a me recontacter en prive.

    Cordialement
    Caramel13

  4. #4
    Membre expert
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2012
    Messages
    1 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2012
    Messages : 1 871
    Points : 3 457
    Points
    3 457
    Par défaut
    Bonjour SylvainM, Caramel13,

    Dans l'ordre d'idée de Caramel13 regarde cette discussion. http://www.developpez.net/forums/d14...mplexe-boucle/

    C'est un peu le code de son idée. À adapter pour tes besoins.

    Bonne journée
    Ce qui se conçoit bien s’énonce clairement et les mots pour le dire arrivent aisément. Nicolas Boileau
    Si tout est OK, n'oubliez pas de cliquer sur

Discussions similaires

  1. [XL-2010] Concaténer des cellules sous condition
    Par alexisgaudet dans le forum Excel
    Réponses: 10
    Dernier message: 17/09/2014, 10h07
  2. Réponses: 2
    Dernier message: 13/08/2009, 09h24
  3. Afficher un champ sous condition
    Par Cantalou dans le forum Access
    Réponses: 24
    Dernier message: 01/02/2006, 14h25
  4. SQL sous Access : affiche un des champs si condition rempli
    Par Thomus38 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 06/09/2005, 12h09
  5. [débutant] concaténer des champs.
    Par goony dans le forum Langage SQL
    Réponses: 15
    Dernier message: 25/08/2005, 08h28

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