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 :

Afficher un champs seulement si un enregistrement y a une valeur


Sujet :

Requêtes et SQL.

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

    Informations forums :
    Inscription : Décembre 2007
    Messages : 206
    Points : 127
    Points
    127
    Par défaut Afficher un champs seulement si un enregistrement y a une valeur
    Bonjour,

    J'ai une table avec pour champs : Q1, Q2, Q3,... Qbcp
    Les enregistrement permettent de savoir si un "document" fait référence à l'un de ces "Qchose". (que je serai peut être ammené à nommer 111, 112,... 216, 511,...) Quand c'est le cas, j'update donc le champ concerné en y ajoutant une croix. ("X")

    Lors de ma requête de recherche, je souhaite n'afficher que les champs où il y a au moins une croix sur l'ensemble des enregistrements retournés. (les autres en largeur = 0 dans la zone de liste)

    S'il n'y a pas de possibilité directement au niveau du SQL, la zone de liste permet-elle cela ? Une piste ?

    Une autre idée générale ? (révision de la conception,...)

    Merci d'avance,
    Wulfram

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 598
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 598
    Points : 34 283
    Points
    34 283
    Par défaut
    salut,

    concernant la question posée dans le post, tu peux avoir une clause HAVING qui peut répondre à ceci, du type
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    HAVING COUNT(champX)>0

    sinon, sur l'architecture de ta table, je pense que tu devrais revoir certains aspects. J'entends par là passer d'une table à 100+ champs à deux tables 100+ enregistrements
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 206
    Points : 127
    Points
    127
    Par défaut
    Citation Envoyé par jpcheck Voir le message
    salut,

    concernant la question posée dans le post, tu peux avoir une clause HAVING qui peut répondre à ceci, du type
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    HAVING COUNT(champX)>0

    sinon, sur l'architecture de ta table, je pense que tu devrais revoir certains aspects. J'entends par là passer d'une table à 100+ champs à deux tables 100+ enregistrements
    HMM, je vais regarder du côté du "HAVING", mais s'il faut spécifier chaque champs à vérifier (tous :p), la requête risque de largement dépasser le nombre de caractères autorisés...

    Pour l'architecture :

    T1,
    T1.num
    T1.Qqqchose

    T2
    T2.num (=T1.num)
    T2.numdoc

    Dans T1, enregistrer tous les Qqqchose possibles, dans T2, créer un enregistrement par Qqqchose auquel le document fait allusion.
    Right ?

    Ce genre de solution ne risque pas de me limiter, sachant que lors de ma recherche je souhaite obtenir tous les Qqqchose de chaque document faisant référence à un Qdonné par l'utilisateur, afin d'obtenir un résultat de cette forme :
    numdoc//info1//infos2//Q1//Q2//Q3//Q4..//Qbcp
    données :
    1//unfauxun//unfauxdeux//X/(rien)//(rien)//X//...
    2//deuxfauxun//deuxfauxdeux//X//X//X//(rien)//...
    pour une recherche basée sur Q1, par exemple.

  4. #4
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 598
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 598
    Points : 34 283
    Points
    34 283
    Par défaut
    Je serais parti sur un système un peu plus simpliste :
    T_QX
    ID_QX
    NM_QX
    ...

    T_Doc
    ID_Doc
    NM_Doc
    ...

    T_Doc_QX
    ID_Doc
    ID_QX


    une requête SELECT sur T_Doc_QX fera l'affaire par la suite
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 206
    Points : 127
    Points
    127
    Par défaut
    Mon T2.num sous-entendais la présence la table T3 :
    T3.numdoc
    T3.infos

    En utilisant la requête SELECT ainsi, je ne vais (enfin je crois) avoir qu'un résultat de ce type :
    numdoc1//infos1doc1//infos2doc2//Qrecherché
    numdoc2//infos1doc2//infos2doc2//Qrecherché

    alors que je cherche :
    numdoc1//infos1doc1//infos2doc1//Qavantrecherchédoc1//Qrecherché//Qaprèsrecherchédoc1
    numdoc2//infos1doc2//infos2doc2//Qavantrecherchédoc2//Qrecherché//Qaprèsrecherchédoc2


    Avec, s'il le faut, une "case" vide sous Qavantrecherchédocx (ou après) si le docx n'est pas rattaché à Qavantrecherchedocy.
    Une présentation sans les cases vides est envisageable, mais me plaît bien moins, car moins "lisible"...

Discussions similaires

  1. Afficher un champs calculé depuis les enregistrements précédents
    Par Interruption13h dans le forum Requêtes
    Réponses: 5
    Dernier message: 14/03/2011, 18h30
  2. Réponses: 2
    Dernier message: 27/08/2010, 11h23
  3. [MySQL] afficher des champs d'un formulaire en fonction d'une liste déroulante
    Par mademoizel dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 08/10/2009, 12h31
  4. Réponses: 2
    Dernier message: 07/05/2008, 09h09
  5. Réponses: 27
    Dernier message: 12/04/2007, 10h23

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