1. #1
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    mai 2008
    Messages
    2 276
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : mai 2008
    Messages : 2 276
    Points : 2 281
    Points
    2 281

    Par défaut Comment cacher des colonnes dont le résultat est "null" ?

    Bonjour

    Une procédure stockée renvoie un tableau de colonnes (champs) et parmi ces colonnes y'en a qui sont à "null" alors pour éviter d'exposer des colonnes vides je cherche un moyen de les rendre "invisible". En cherchant sur le net j'ai pas trouvé une piste qui puisse me guider alors je me retourne vers vous.

    Merci d'avance.
    Bon courage ou Bonne Chance (selon le contexte)
    Mon blog sur WordPress

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique
    Inscrit en
    janvier 2007
    Messages
    8 694
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : janvier 2007
    Messages : 8 694
    Points : 20 435
    Points
    20 435
    Billets dans le blog
    4

    Par défaut

    Bonjour,

    je n'ai pas la moindre idée de ce qui est demandé ! et répondre que COALESCE est là pour ce genre de cas me semble trop simple.
    La seule chose absolue dans un monde comme le nôtre, c'est l'humour. » Albert Einstein
    J'entends et j'oublie. Je vois et je me souviens. Je fais et je comprends . Confucius
    Si votre seul outil est un marteau, vous aurez tendance a ne voir que des clous

  3. #3
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    mai 2008
    Messages
    2 276
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : mai 2008
    Messages : 2 276
    Points : 2 281
    Points
    2 281

    Par défaut

    Citation Envoyé par SergioMaster Voir le message
    Bonjour,

    je n'ai pas la moindre idée de ce qui est demandé ! et répondre que COALESCE est là pour ce genre de cas me semble trop simple.
    Merci pour la réponse mais COALESCE ne me semble pas satisfaire ma demande. Si je ne veux pas avoir une colonne avec des "null" partout c'est que je ne veux pas non plus voir des "/" à la place
    en d'autres termes, je veux cacher les colonnes qui ne rendent aucune information mais je crois que c'est un peu difficile de l'imaginer, car le remplissage des lignes se fait séquentiellement mais si tout se passe dans la mémoire alors là c'est possible.

    Dans ce cas, faut il avoir un "boolean" qui nous dit si toutes les lignes d'une colonne ont la valeur "null" ou pas. Donc, si une seule ligne n'est pas "null" l'affichage se fait.
    Bon courage ou Bonne Chance (selon le contexte)
    Mon blog sur WordPress

  4. #4
    Membre expérimenté
    Homme Profil pro
    Ingenieur de recherche - Ecologue
    Inscrit en
    juin 2003
    Messages
    1 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingenieur de recherche - Ecologue

    Informations forums :
    Inscription : juin 2003
    Messages : 1 093
    Points : 1 472
    Points
    1 472

    Par défaut

    Bonjour

    C'est le rôle de l'application (en delphi, C++, etc) qui gère l'interface et permet d'afficher, ou non, les colonnes.
    La PS ou la requête va afficher les colonnes qui lui sont demandées sans préjugée de leur contenu.

    a+
    olivier
    Merci d'ajouter un sur les tags qui vous ont aidé

  5. #5
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    mai 2008
    Messages
    2 276
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : mai 2008
    Messages : 2 276
    Points : 2 281
    Points
    2 281

    Par défaut

    Bonjour ... oui c'est une piste mais quand une requête retourne, sous réseau, plusieurs dizaine de milliers d'enregistrements, le réglage au niveau de l'application se sent lourd je présume.
    Bon courage ou Bonne Chance (selon le contexte)
    Mon blog sur WordPress

  6. #6
    Membre expérimenté
    Homme Profil pro
    Ingenieur de recherche - Ecologue
    Inscrit en
    juin 2003
    Messages
    1 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingenieur de recherche - Ecologue

    Informations forums :
    Inscription : juin 2003
    Messages : 1 093
    Points : 1 472
    Points
    1 472

    Par défaut

    1 - Faire une requête qui compte de nombre de valeur pour chaque colonne,
    2 - dans l'appli construire la requête qui n’inclura que les colonnes non vides.

    Mais je ne suis pas sûr que cela soit économe en temps ..
    Merci d'ajouter un sur les tags qui vous ont aidé

  7. #7
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    mai 2008
    Messages
    2 276
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : mai 2008
    Messages : 2 276
    Points : 2 281
    Points
    2 281

    Par défaut

    Citation Envoyé par dehorter olivier Voir le message
    1 - Faire une requête qui compte de nombre de valeur pour chaque colonne,
    2 - dans l'appli construire la requête qui n’inclura que les colonnes non vides.

    Mais je ne suis pas sûr que cela soit économe en temps ..
    Tant que c'est au niveau du SGBDR je suis d'accord avec vous ... et merci pour l'astuce.
    Bon courage ou Bonne Chance (selon le contexte)
    Mon blog sur WordPress

  8. #8
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique
    Inscrit en
    janvier 2007
    Messages
    8 694
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : janvier 2007
    Messages : 8 694
    Points : 20 435
    Points
    20 435
    Billets dans le blog
    4

    Par défaut

    Citation Envoyé par dehorter olivier Voir le message
    Mais je ne suis pas sûr que cela soit économe en temps ..
    cela ne risque pas étant donné qu'il faut rechercher dans la table autant de fois que de colonnes
    Toutefois c'est faisable à l'intérieur d'une procédure grâce a des EXECUTE STATEMENT
    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
     
    SET TERM ^ ;
    CREATE PROCEDURE BUILDNONNULLSQL (
        TABLENAME CHAR(31) )
    RETURNS (
        NOTNULLCOLUMNS VARCHAR(2024) )
    AS
    DECLARE VARIABLE F VARCHAR(31);
    DECLARE VARIABLE STMT VARCHAR(256); 
    DECLARE VARIABLE N INTEGER; 
    BEGIN
    NOTNULLCOLUMNS='';
    FOR  select f.rdb$field_name
      from rdb$relation_fields f
      join rdb$relations r on f.rdb$relation_name = r.rdb$relation_name
     and r.rdb$view_blr is null 
     and (r.rdb$system_flag is null or r.rdb$system_flag = 0)
     WHERE f.RDB$RELATION_NAME=:TABLENAME
     order by 1, f.rdb$field_position INTO :F
    DO BEGIN
      STMT='SELECT COUNT(1) FROM '||:TABLENAME||' WHERE '||:F||'IS NOT NULL';
      EXECUTE STATEMENT STMT INTO :N;
      IF (N>0) THEN
       BEGIN
        IF (CHARACTER_LENGTH(TRIM(NOTNULLCOLUMNS))>0) THEN NOTNULLCOLUMNS=TRIM(NOTNULLCOLUMNS)||', ';
        NOTNULLCOLUMNS=NOTNULLCOLUMNS||:F; 
       END
    END     
    NOTNULLCOLUMNS='SELECT '||TRIM(NOTNULLCOLUMNS)||' FROM '||:TABLENAME;
    SUSPEND; 
     
    END^
    SET TERM ; ^
    AMHA l'intérêt est comme les colonnes : NULL
    La seule chose absolue dans un monde comme le nôtre, c'est l'humour. » Albert Einstein
    J'entends et j'oublie. Je vois et je me souviens. Je fais et je comprends . Confucius
    Si votre seul outil est un marteau, vous aurez tendance a ne voir que des clous

  9. #9
    Expert éminent

    Homme Profil pro
    bourreau
    Inscrit en
    mars 2010
    Messages
    3 215
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : mars 2010
    Messages : 3 215
    Points : 7 123
    Points
    7 123
    Billets dans le blog
    1

    Par défaut

    Citation Envoyé par Just-Soft Voir le message
    Merci pour la réponse mais COALESCE ne me semble pas satisfaire ma demande. Si je ne veux pas avoir une colonne avec des "null" partout c'est que je ne veux pas non plus voir des "/" à la place
    en d'autres termes, je veux cacher les colonnes qui ne rendent aucune information mais je crois que c'est un peu difficile de l'imaginer, car le remplissage des lignes se fait séquentiellement mais si tout se passe dans la mémoire alors là c'est possible.

    Dans ce cas, faut il avoir un "boolean" qui nous dit si toutes les lignes d'une colonne ont la valeur "null" ou pas. Donc, si une seule ligne n'est pas "null" l'affichage se fait.
    Le souci c'est que la ou les colonne(s) nulles peuvent varier en fonction des lignes, du coup les valeurs affichées ne tomberont plus en face des entête de colonne de votre formulaire
    du coup une solution à base de COALESCE me semble la plus raisonable

  10. #10
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    mai 2008
    Messages
    2 276
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : mai 2008
    Messages : 2 276
    Points : 2 281
    Points
    2 281

    Par défaut

    Citation Envoyé par escartefigue Voir le message
    Le souci c'est que la ou les colonne(s) nulles peuvent varier en fonction des lignes
    C'est ce que je disais ... c'est juste, d'où la difficulté.

    Citation Envoyé par escartefigue Voir le message
    du coup les valeurs affichées ne tomberont plus en face des entête de colonne de votre formulaire
    pour cela je n'ai pas de problème j'ai un affichage dynamique, je l'ai réglé au niveau applicatif.

    Citation Envoyé par escartefigue Voir le message
    du coup une solution à base de COALESCE me semble la plus raisonable
    J'aimerais bien voir la recette par l'exemple.
    Bon courage ou Bonne Chance (selon le contexte)
    Mon blog sur WordPress

Discussions similaires

  1. Réponses: 2
    Dernier message: 25/01/2016, 17h04
  2. Réponses: 0
    Dernier message: 13/11/2014, 17h12
  3. Réponses: 4
    Dernier message: 17/09/2009, 21h52
  4. Comment cacher des propriétés dans un nouvel objet ?
    Par Pedro dans le forum Composants VCL
    Réponses: 2
    Dernier message: 22/10/2003, 19h53
  5. [VB6] Datagrid afficher ou cacher des colonnes par code
    Par soazig dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 06/02/2003, 18h19

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