Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access
Access Forum d'entraide sur Microsoft Access. Avant de poster -> La F.A.Q Access
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 26/05/2011, 00h35   #1
Membre du Club
 
bonero pross
Inscription : janvier 2010
Messages : 160
Détails du profil
Informations personnelles :
Nom : bonero pross

Informations forums :
Inscription : janvier 2010
Messages : 160
Points : 58
Points : 58
Par défaut Probleme avec Null : Is Null ne prends pas en compte tous mes enregistrements Vides.

Bonjour tout le monde,
J’ai une table nommée T qui contient 30 enregistrements. j’ai dans cette table un champs (de type de donnée String ) nommé AnimauxDomestiques. Ce dernier contient 10 enregistrements « chien » et 20 enregistrements nulls.
Mais bizarrement le code suivant me donne 12 au lieu de 20.
Code sql :
1
2
3
SELECT  *
FROM T
WHERE T. AnimauxDomestiques IS NULL
Tandis que le code suivant me donne 8 au lieu de 20.
Code sql :
1
2
3
SELECT  *
FROM T
WHERE T. AnimauxDomestiques <> « chien »
Je ne comprends plus rien. Je precise que le champs AnimauxDomestiques compte bel et bien 10 « chien » et les 20 enregistrements restants ne contiennent rien c-a-d sont Null.
Par contre, remarquez que la somme de 8 et 12 obtenus en haut font le compte de 20 enregistrements NULL.
Svp aidez moi a comprendre ce qui ne va ? il me semble que le test Is Null n’arrive pas a prendre pas en compte la totalité de mes enregistrements Vides
Merci d’avance.
ps j utilise Access 2003
Bonero est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/05/2011, 01h04   #2
Nouveau Membre du Club
 
Cheikh Ibrahima Nokho
Inscription : décembre 2010
Messages : 41
Détails du profil
Informations personnelles :
Nom : Cheikh Ibrahima Nokho

Informations forums :
Inscription : décembre 2010
Messages : 41
Points : 25
Points : 25
Salut c'est juste une idée. N'avez vous pas mis d'espace sans le savoir?
Nokho est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/05/2011, 09h49   #3
Membre du Club
 
bonero pross
Inscription : janvier 2010
Messages : 160
Détails du profil
Informations personnelles :
Nom : bonero pross

Informations forums :
Inscription : janvier 2010
Messages : 160
Points : 58
Points : 58
C’est une base de donnees don’t j ai herite donc je ne sais pas si il y a des espaces qui ont ete introduits comme enregistrements. Si on suppose que c’est le cas comment pourrais-je les transformer/converter en Null afin que le test IS NULL me renvoie 20? En plus j’ai lu quelque part que la distinction entre “espace” et “Null” n’est importante que si on ecrit du code vba et donc a priori IS NULL devait prendre en compte non seulement les “vrai” Null mais en plus les “espaces”.

merci de ta reponse
Bonero est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/05/2011, 09h52   #4
Expert Confirmé
 
Avatar de Richard_35
 
Homme
Inscription : juillet 2007
Messages : 2 176
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : juillet 2007
Messages : 2 176
Points : 2 805
Points : 2 805
Bonjour Bonero et Nokho,

Code sql :
1
2
3
SELECT  *
FROM T
WHERE T. AnimauxDomestiques IS NULL
==> 12 enregistrements.


Combien as-tu d'enregistrements dans
Code sql :
1
2
3
SELECT  *
FROM T
WHERE T. AnimauxDomestiques=""
(guillemet, guillement, sans espace) ?


D'autre part, je ne sais pas si le caractère "«" est bien pris en compte : il faut utiliser des guillemets en format ==> ".


Donc, combien as-tu d'enregistrements dans
Code sql :
1
2
3
SELECT  *
FROM T
WHERE T. AnimauxDomestiques="chien"
?
__________________
Dis-nous et à bientôt,
Richard.
----------------------------------------------------------------------------------------------
En cas de résolution, et afin de faciliter la tâche des bénévoles, merci de cliquer sur .
et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
Richard_35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/05/2011, 13h00   #5
Nouveau Membre du Club
 
Cheikh Ibrahima Nokho
Inscription : décembre 2010
Messages : 41
Détails du profil
Informations personnelles :
Nom : Cheikh Ibrahima Nokho

Informations forums :
Inscription : décembre 2010
Messages : 41
Points : 25
Points : 25
Essaie ça:
Code :
1
2
3
SELECT  *
FROM T
WHERE T. AnimauxDomestiques like "*"
Si ça te donne plus de 10 donc il y a des caractères dans des enregistrements que tu crois vide.
Nokho est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/05/2011, 17h01   #6
Membre Expert
 
Inscription : janvier 2006
Messages : 1 111
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 1 111
Points : 1 093
Points : 1 093
Bonjour,
On peut aussi utiliser Nz:
Code :
1
2
3
SELECT  *
FROM T
WHERE trim(nz(AnimauxDomestiques, '')) = ''
__________________
[Access] Les bases du débogage => ici
Kloun est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/06/2011, 00h47   #7
Membre du Club
 
bonero pross
Inscription : janvier 2010
Messages : 160
Détails du profil
Informations personnelles :
Nom : bonero pross

Informations forums :
Inscription : janvier 2010
Messages : 160
Points : 58
Points : 58
merci a tout le monde et surtout a Kloun pour vos reponses, elle(la reponse de Kloun) permet de prendre en compte en une seule ligne de code les cas où on a Nulls ou "".
pour info j'ai testé vos diverses propositions et effectivement ma table contient bel et bien des ZLS(zero length strings).

maintenant j'aimerais savoir si il y a moyen de transformer/convertir ses espaces (cad "") en Null de maniere a pouvoir utiliser avec succes le test IS NULL.

merci d'avance.

Cordiallement.
Bonero est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/06/2011, 12h27   #8
Membre Expert
 
Avatar de nico84
 
Homme Nicolas Guimbal
Consultant/développeur ERP
Inscription : mai 2008
Messages : 1 254
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Guimbal
Âge : 49
Localisation : France

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

Informations forums :
Inscription : mai 2008
Messages : 1 254
Points : 1 870
Points : 1 870
bonjour,
c'est tout simplement
Code :
update matable set monchamp=null where monchamp=""
Mais ensuite il faudra regarder pourquoi les 2 sont présents et faire en sorte qu'il n'y ait plus d'écriture de ""...
nico84 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/06/2011, 09h38   #9
Membre du Club
 
bonero pross
Inscription : janvier 2010
Messages : 160
Détails du profil
Informations personnelles :
Nom : bonero pross

Informations forums :
Inscription : janvier 2010
Messages : 160
Points : 58
Points : 58
Citation:
Envoyé par nico84 Voir le message
bonjour,
c'est tout simplement
Code :
update matable set monchamp=null where monchamp=""
Mais ensuite il faudra regarder pourquoi les 2 sont présents et faire en sorte qu'il n'y ait plus d'écriture de ""...
Merci NICO84.
bonne journee
Bonero est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 16h36.


 
 
 
 
Partenaires

Hébergement Web