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

denver78610 29 Messages postés mardi 20 avril 2010Date d'inscription 13 juillet 2010 Dernière intervention - 12 mai 2010 à 17:00 - Dernière réponse : HermannDev 1 Messages postés lundi 8 février 2016Date d'inscription 8 février 2016 Dernière intervention
- 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!!!
Afficher la suite 

3 réponses

Répondre au sujet
cs_DARKSIDIOUS 15838 Messages postés jeudi 8 août 2002Date d'inscription 4 mars 2013 Dernière intervention - 12 mai 2010 à 17:35
+1
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_DARKSIDIOUS
denver78610 29 Messages postés mardi 20 avril 2010Date d'inscription 13 juillet 2010 Dernière intervention - 12 mai 2010 à 20:05
0
Utile
héhéééé jte remerci pour toutes ces présisions!

je testerai sa vendredi!

merci beaucoup!

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

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.