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 :

N'afficher que les enregistrements pour lesquels au moins un champ est vide ou null


Sujet :

Requêtes et SQL.

  1. #1
    Membre habitué
    Homme Profil pro
    Data Manager
    Inscrit en
    Octobre 2013
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Data Manager
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2013
    Messages : 151
    Points : 167
    Points
    167
    Par défaut N'afficher que les enregistrements pour lesquels au moins un champ est vide ou null
    Bonjour à toutes et à tous,

    Je souhaiterais obtenir la liste des enregistrements d'une table pour lesquels au moins un champ est vide. J'ai écrit la requête correspondante. J'ai sélectionné les champs qui m'intéressent et j'ai inscrit une clause WHERE le champ est null. Je fais ça en VBA en parcourant tous les champs de la table. (Si nécessaire, je peux vous envoyer ce que j'ai écrit précisément.) J'obtiens bien les infos souhaitées. Mais pas seulement puisque je me retrouve avec plein d'info inutiles.

    Par exemple admettons que le champ "Champ1" soit rempli pour tous les enregistrements, contrairement au champ "Champ2". Je souhaiterais que n'apparaisse dans le résultat de ma requête que le champ "Champ2", non pas le champ "Champ1" puisque justement il est rempli pour tous les enregistrements. Le voir dans le résultat de ma requête me donne une info que je ne veux pas avoir.

    Faut-il que je passe par une requête par champ et que je joigne les différents résultats que si la requête a au moins un enregistrement ? Mais ça je ne sais pas faire... Parce que si le champ "Champ2" est vide pour l'enregistrement 12 et le champ "Champ3" est vide pour l'enregistrement 5, alors je veux voir dans le résultat de ma requête l'enregistrement 5 (avec la valeur du champ "Champ2" et une case vide pour le champ "Champ3") et l'enregistrement 12 (avec une case vide pour le champ "Champ2" et la valeur du champ "Champ3").

    Si vous avez des idées à me proposer, elles seront accueillies avec toute l'estime qu'elles sont en droit d'attendre !

    A bientôt
    Bonne journée
    Laurent

  2. #2
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2013
    Messages : 15
    Points : 22
    Points
    22
    Par défaut
    Bonjour,

    Je ne suis pas sûr d'avoir tout compris !?

    Mais ne serait-ce pas un truc du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT Champ2, Champ3
    FROM TaTable
    WHERE Champ2 IS NULL OR Champ3 IS NULL;

  3. #3
    Membre habitué
    Homme Profil pro
    Data Manager
    Inscrit en
    Octobre 2013
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Data Manager
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2013
    Messages : 151
    Points : 167
    Points
    167
    Par défaut
    Bonjour,

    Merci pour ta réponse.

    Et oui ça c'est quand on connait le résultat. Mais justement je cherche à savoir quels sont les champs qui ne sont pas remplis.

    Du coup je crée la requête de manière automatique en parcourant tous les champs de la table. Donc ma requête inclus tous les champs. Elle s'écrit comme tu le proposes mais avec aussi Champ1

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT Champ1, Champ2, Champ3
    FROM TaTable
    WHERE Champ1 IS NULL OR Champ2 IS NULL OR Champ3 IS NULL;
    J'ai comme résultat ceci. Nom : Resultat_Requete.png
Affichages : 673
Taille : 5,9 Ko

    Et je souhaiterais que seule la colonne "Pour les fen" s'affiche, les autres champs étant complets.

    Est-ce que c'est plus clair ?

    A bientôt
    Laurent

  4. #4
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 107
    Points : 5 230
    Points
    5 230
    Par défaut
    Bonjour,

    Je ne pense pas que cette requete puisse s'écrire directement puisque le nombre de colonnes n'est pas connu à l'avance.

    Si vraiment ce besoin est nécessaire il est possible en VBA de déterminer d'abord la liste des colonnes à afficher et ensuite de construire la requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    for i=1 to 3 'boucle pour déterminer les champs à afficher
      test(i) = dcount("*","matable","isnull(champ" & i & ")")>0
    next
     
    Sr="select "
    for i=1 to 3 'boucle pour lister les champs à afficher
      if test(i) then Sr= Sr & "champ" & i & ","
    next
    Sr=left(sr,len(sr)-1) & " from matable where "
    for i=1 to 3 'boucle pour ajouter les conditions
    ...
    next
    'exécuter Sr...
    Il y a toujours une solution mais à mon avis le résultat est difficilement exploitable !

  5. #5
    Membre habitué
    Homme Profil pro
    Data Manager
    Inscrit en
    Octobre 2013
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Data Manager
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2013
    Messages : 151
    Points : 167
    Points
    167
    Par défaut
    Bonjour,

    Merci beaucoup pour cette proposition.

    Je comprends bien le problème des colonnes à afficher ou non qui sont inconnues au départ. J'ai réalisé ça suite à ma réponse hier. Du coup je me disais qu'il fallait sans doute décomposer le problème.

    Je vais voir ce que je peux faire avec ça. Merci !

    A bientôt
    Laurent

  6. #6
    Membre habitué
    Homme Profil pro
    Data Manager
    Inscrit en
    Octobre 2013
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Data Manager
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2013
    Messages : 151
    Points : 167
    Points
    167
    Par défaut
    Re-bonjour,

    Ca marche super bien ! C'est exactement ce que je voulais. J'ai légèrement adapté puisque je ne connais pas à priori le nombre de champ de la table. (En fait j'ai inséré ce code dans une fonction VBA prenant en argument la table sur laquelle je veux chercher les champs vides et je fais tourner cette fonction sur les tables de ma base).

    Pour l'utilisation que je veux en faire, le résultat est plus exploitable comme ça qu'avec tous les champs apparaissant. J'ai rajouté l'identifiant de l'enregistrement dans ma requête et j'obtiens ainsi les données manquantes pour au moins un enregistrement, pas les autres. Du coup mon tableau n'est pas chargé inutilement d'informations qui ne me servent à rien. L'objectif du tableau est précisément de lister les données manquantes pour aller ensuite les rechercher.

    Bref, je suis ravi !!!

    Mille merci !

    Bonne journée
    Excellent week-end !
    Laurent

  7. #7
    Candidat au Club
    Homme Profil pro
    Audit and compliance
    Inscrit en
    Mai 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Audit and compliance
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mai 2014
    Messages : 2
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par laurent_42 Voir le message
    Re-bonjour,

    Ca marche super bien ! C'est exactement ce que je voulais. J'ai légèrement adapté puisque je ne connais pas à priori le nombre de champ de la table. (En fait j'ai inséré ce code dans une fonction VBA prenant en argument la table sur laquelle je veux chercher les champs vides et je fais tourner cette fonction sur les tables de ma base).

    Pour l'utilisation que je veux en faire, le résultat est plus exploitable comme ça qu'avec tous les champs apparaissant. J'ai rajouté l'identifiant de l'enregistrement dans ma requête et j'obtiens ainsi les données manquantes pour au moins un enregistrement, pas les autres. Du coup mon tableau n'est pas chargé inutilement d'informations qui ne me servent à rien. L'objectif du tableau est précisément de lister les données manquantes pour aller ensuite les rechercher.

    Bref, je suis ravi !!!

    Mille merci !

    Bonne journée
    Excellent week-end !
    Laurent

  8. #8
    Candidat au Club
    Homme Profil pro
    Audit and compliance
    Inscrit en
    Mai 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Audit and compliance
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mai 2014
    Messages : 2
    Points : 3
    Points
    3
    Par défaut Affichage de nombre d'enregistrement vide dans une table
    Bonjour!
    je viens par la presente solliciter une aide. Je rencontre le même problème à mon niveau. Je travail sur une grosse base de données, et je veux afficher tous les champs qui possèdent aumoins une cellule vide. Merci de bien vouloir me venir en aide, avec un code VBA ou autre.

  9. #9
    Membre habitué
    Homme Profil pro
    Data Manager
    Inscrit en
    Octobre 2013
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Data Manager
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2013
    Messages : 151
    Points : 167
    Points
    167
    Par défaut
    Bonjour,

    Eh bien as-tu essayé la solution proposée par Nico84 ? Sinon, commence par cette étape. Si tu l'as testée et que ça ne marche pas, explique plus précisément ton problème mais dans un nouveau fil, celui-ci était résolu.

    A bientôt
    Laurent

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 05/07/2012, 17h16
  2. Réponses: 5
    Dernier message: 20/05/2009, 13h12
  3. [AC-2003] Afficher la photo "blank.jpg" dans état lorsque le champ est vide
    Par fins51 dans le forum VBA Access
    Réponses: 8
    Dernier message: 16/05/2009, 13h37
  4. Réponses: 6
    Dernier message: 26/11/2008, 22h27
  5. Réponses: 4
    Dernier message: 05/07/2006, 21h58

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