Probleme avec un champ booléen

Résolu
denver78610 Messages postés 29 Date d'inscription mardi 20 avril 2010 Statut Membre Dernière intervention 13 juillet 2010 - 12 mai 2010 à 17:00
HermannDev Messages postés 1 Date d'inscription lundi 8 février 2016 Statut Membre Dernière intervention 8 février 2016 - 8 févr. 2016 à 07:36
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

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 131
12 mai 2010 à 17:35
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
2
denver78610 Messages postés 29 Date d'inscription mardi 20 avril 2010 Statut Membre Dernière intervention 13 juillet 2010
12 mai 2010 à 20:05
héhéééé jte remerci pour toutes ces présisions!

je testerai sa vendredi!

merci beaucoup!

Denver, le dernier dinosaur!!!!
0
HermannDev Messages postés 1 Date d'inscription lundi 8 février 2016 Statut Membre Dernière intervention 8 février 2016
8 févr. 2016 à 07:36
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.
0