Probleme avec un champ booléen [Résolu]

Signaler
Messages postés
29
Date d'inscription
mardi 20 avril 2010
Statut
Membre
Dernière intervention
13 juillet 2010
-
Messages postés
1
Date d'inscription
lundi 8 février 2016
Statut
Membre
Dernière intervention
8 février 2016
-
Bonjour tout le monde

Je suis un programmeur débutant en quete de nouvelle connaissance et je vien de tombé sur un cas que je ne comprend pas.

Je travail sur une base de donnée access 2000 avec du VB 6.
Dans mon script VB je fais des insert et des updates sur une table qui possède un champ de type booléen. mon premier probleme est que lorsque j'écrit dans mon script VB monchampbool true/false lors de l'exécution de ma requete le programme m'affiche monchampbool vrai/faux ce qui n'es pas compri par access. Es normal? En suite j'ai donc entrepri de changé mes true/false par 1/0. Maintenent l'update s'effectue correctement mais dans ma base je me retrouve en effet avec 0 a la place des 0 (tout va bien pour l'instant :D) mais a la place des 1 j'ai des -1.....

j'ai testé d'exécuté ma commande directement dans access et j'ai le meme résultat...

plusieur question me vienne alors à l'esprit surtout au niveau du traitement de ce -1. puis - je écrire dans mon programme VB monbool = true ? ou encore if(monbool)? monbool prenderai -1 ou 0 extrait de la base de donnée. Si je déclare une variable de type booléen es quelle sera en mesure de prendre la valeur -1 ou aurai-je une erreur ? et surtout es que la valeure -1 sera reconnu comme étant équivalente a true?

je vous remerci d'avance!
denver, le dernier dinosaur!!!

3 réponses

Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
121
Salut,

En effet, access stocke les boolean selon les valeurs 0 et -1 : 0 pour false, -1 pour true.

Par rapport aux requêtes SQL, access accepte TRUE/FALSE ou 0/Un autre chiffre (si ma mémoire est bonne) : 0 = false, sinon, c'est true.

Il te faut donc formatter tes booleans avant de les envoyer dans ta base access, du style :
"UPDATE TaTable Set TonCHamp = " & iif(tonChamp, "TRUE", "FALSE")

______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
Messages postés
29
Date d'inscription
mardi 20 avril 2010
Statut
Membre
Dernière intervention
13 juillet 2010

héhéééé jte remerci pour toutes ces présisions!

je testerai sa vendredi!

merci beaucoup!

Denver, le dernier dinosaur!!!!
Messages postés
1
Date d'inscription
lundi 8 février 2016
Statut
Membre
Dernière intervention
8 février 2016

bien que le sujet soit de 2010, je repend comme même

il suffit de convertir la valeur en integer avec la fonction cint() dans la requete sql.