Rechercher : dans
Par :

Valeur NULL invisible sous Access

Dernière réponse le 2 jan 2008 à 16:04:26 Jérémy, le 2 jan 2008 à 14:31:17 
 Signaler ce message aux modérateurs

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 ;-)
Configuration: Windows XP
Firefox 2.0.0.11

Meilleures réponses pour « Valeur NULL invisible sous Access » dans :
SQL - Contraintes d'intégrité VoirExpression de contraintes d'intégrité Une contrainte d'intégrité est une clause permettant de contraindre la modification de tables, faite par l'intermédiaire de requêtes d'utilisateurs, afin que les données saisies dans la base soient...

1

le père, le 2 jan 2008 à 15:14:27

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 !

Répondre à le père

2

Jérémy, le 2 jan 2008 à 15:33:40

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 ;-)

Répondre à Jérémy

3

le père, le 2 jan 2008 à 15:52:43

Grâce à la fonction IsNull(variant)

Répondre à le père

4

 Jérémy, le 2 jan 2008 à 16:04:26

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

Répondre à Jérémy