Valeur NULL invisible sous Access

Jérémy - 2 janv. 2008 à 14:31
 Jérémy - 2 janv. 2008 à 16:04
Bonjour,

Voici mon problème :
A l'aide d'un formulaire, je met à jour la base de donnée de la manière suivante :
'récupération de la valeur du champ "monchamp"
MonChamp = request.Form("monchamp")
'test si la nouvelle valeur du champ est différente de celle présente dans le base de données
If MonChamp <> objRec("monchamp") then
[enregistrement des modifs dans la base]
End If


Le champ dans ma base est vide alors que ce n'est pas le cas de la variable "MonChamp" récupérée par formulaire.
Et bien figurez-vous que malgré tout, "MonChamp" étant différent de "objRec("monchamp"), la condition If n'est pas vérifiée et le serveur passe aux instructions qui suivent End If...

Bizarre...

En cherchant un peu, je me suis aperçu que lorsque je modifiais manuellement un champ dans la base de donnée et que j'effaçais tout ensuite, la condition If était vérifiée et le serveur procédait à l'enregistrement des modifs dans la base.

Serait-ce alors une histoire de champ de valeur NULL à l'origine et qui prendrait la valeur "" (vide) dès qu'on le modifie une fois ?
Mystère !

En tout cas, si quelqu'un peut m'éclairer sur le sujet...
Je n'ai d'ailleurs pas trouvé comment faire afficher le valeur Null sous access afin de différencier les champs NULL des champs Vide

Merci d'avance,
Jérémy ;-)
A voir également:

4 réponses

grâce à la fonction IsNull(variant)
0
Ok je vois.

Par contre n'y a t'il vraiment aucun moyen de voir si la valeur d'un champ est NULL ou VIDE sous Microsoft Access ?
Car pour l'instant l'affichage est une cellule vide, indifféremment de ces 2 valeurs.

Merci encore
0
Bonjour

Serait-ce alors une histoire de champ de valeur NULL à l'origine et qui prendrait la valeur "" (vide) dès qu'on le modifie une fois ?
Oui, sûrement

MonChamp <> objRec("monchamp")
Si un des termes de l'expression est NULL, la valeur de l'expression est NULL. et NULL étant traduit par FALSE lors de la conversion en boolean (pour traiter le if), tu as l'impression que MonChamp est égal à objRec("monchamp")

Si tu avais écrit if MonChamp = objRec("monchamp"), tu aurais eu le même comportement pour les enregistrements NULL, puisque dans ce cas, MonChamp = objRec("monchamp") et MonChamp <> objRec("monchamp") sont tous les deux NULL c'est à dire FALSE !
-1
Ok merci beaucoup de ta réponse il me semblait bien que c'était une histoire de ce genre

Mais alors comment différencier sous Access les champs de valeur NULL et ceux qui sont vide ?
Et comment être sûr qu'aucun champ n'a la valeur NULL dans ma base ?

Merci d'avance pour votre réponse
Jérémy ;-)
-1