CheckBox - [enregistre valeur -1 au lieu de 1]

Sinsitrus
Messages postés
855
Date d'inscription
samedi 11 juin 2005
Statut
Membre
Dernière intervention
21 août 2015
- 8 oct. 2008 à 05:27
fdaly007
Messages postés
19
Date d'inscription
dimanche 23 septembre 2007
Statut
Membre
Dernière intervention
18 septembre 2009
- 20 oct. 2008 à 11:02
Salut !

Je ne sais pas pourquoi, mais au lieu que mon CheckBox enregistre en True une valeur 1 il enregistre plutôt une valeur -1
Et en False une valeur 0(là c'est normal)

Voici le bout de mon code :

Private Sub T_Assurance1_Click()
If T_Assurance1 = Checked Then
T_Assurance2.Enabled = True
Else
T_Assurance2.Enabled = False
T_Assurance2 = ""
End If
End Sub

Pouvez vous m'aider svp a corriger cette erreur pour qu'il puisse enregistrer depuis mon Data une valeur 1 au lieu de -1 ?

Merci à tous !

----------
OS        : Windows XP SP3
Platforme : VB 6.0 + SP6
Ok VB6.0 c'est pas net !

13 réponses

jmfmarques
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
27
8 oct. 2008 à 08:33
Bonjouir,
Parce que, précisément, la valeur de True est -1 (celle de False étant 0)

essaye :

Msgbox true = -1
Msgbox  true * 1

Vu ?
Si tu veux insérer 1 dans ta base lorsque c'est True, multiplie donc par -1 !!!
0
jmfmarques
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
27
8 oct. 2008 à 08:36
Ah oui !
ou encore : prend la valeur absolue !:

msgbox  Abs(True)
0
cs_casy
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
8 oct. 2008 à 09:02
Effectivement en VB, True est représenté par -1 en écriture.

Par contre, et comme la plupart des langages, en lecture, est considéré comme True toute valeur différente de False, c'est à dire 0

Si True = -1 en écriture, 1, -1, 45, 75 sera égal à True en lecture.

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
0
Sinsitrus
Messages postés
855
Date d'inscription
samedi 11 juin 2005
Statut
Membre
Dernière intervention
21 août 2015

8 oct. 2008 à 13:23
Salut !

Private Sub B_Ajouter_Click()
With Data.Recordset
.Assurance1 = T_Assurance1
.Update
Data.Refresh
End With

Voilà par où je passe mes enregistrement.
J'ai essayé plusieurs options, supprimant le




T_Assurance1




et le remplaçant par plusieurs valeur mais non, rien n'a changé.
Je me demande si je devrais pas lui demander que s'il est null alors qu'il est 0 et s'il est pas null alors il est 1
Ca aussi j'ai essayé mais ca n'a rien donné. Pour la multiplication de la valeur, je ne suis pas arrivé a ce niveau :s mais merci de m'aider les gars c'est gentil a vous.

Merci

----------
OS        : Windows XP SP3 et Vista 32
Platforme : VB 6.0 + SP6
Ok VB6.0 c'est pas net !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jmfmarques
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
27
8 oct. 2008 à 13:52
.Assurance1 = abs(T_Assurance1.value)
0
Sinsitrus
Messages postés
855
Date d'inscription
samedi 11 juin 2005
Statut
Membre
Dernière intervention
21 août 2015

8 oct. 2008 à 14:18
Excusez moi g pas noté cet essais mais je l'avais fais aussi mais pareil, il enregistre toujours -1
0
jmfmarques
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
27
8 oct. 2008 à 19:22
Quel est donc le type de ton champ Assurance1 ? (dans ta table)
0
cs_casy
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
8 oct. 2008 à 19:40
Très certainement boolean (ou logique, ce qui est la même chose)

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
0
Sinsitrus
Messages postés
855
Date d'inscription
samedi 11 juin 2005
Statut
Membre
Dernière intervention
21 août 2015

8 oct. 2008 à 19:50
Salut !
oui en boolean
0
jmfmarques
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
27
9 oct. 2008 à 00:27
Dans ce cas : je ne vois absolument rien d'anormal !!!!


Qu'est-ce qui te chiffonne donc ???
0
jmfmarques
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
27
9 oct. 2008 à 00:43
Si maintenant tu tiens absolument à avoir, dans ta table, des 1 et des 0, mets donc ton champ en numérique et passe-lui, en enregistrement, la valeur absolue (Abs) de ta variable booléenne.

Si, au contraire, tu veux garder ton champ en booléen et le visualiser (affichage) en 1 et 0, transforme à l'affichage :

affichage = Abs(lecture_champ)

Si enfin, celà te gêne pour faire un total des True, fais cette manip in fine :
total = abs(total)...

Voilà ...
0
jmfmarques
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
27
9 oct. 2008 à 00:43
Si maintenant tu tiens absolument à avoir, dans ta table, des 1 et des 0, mets donc ton champ en numérique et passe-lui, en enregistrement, la valeur absolue (Abs) de ta variable booléenne.

Si, au contraire, tu veux garder ton champ en booléen et le visualiser (affichage) en 1 et 0, transforme à l'affichage :

affichage = Abs(lecture_champ)

Si enfin, celà te gêne pour faire un total des True, fais cette manip in fine :
total = abs(total)...

Voilà ...
0
fdaly007
Messages postés
19
Date d'inscription
dimanche 23 septembre 2007
Statut
Membre
Dernière intervention
18 septembre 2009

20 oct. 2008 à 11:02
Salut !
j'ai une petite probleme au niveau de l'enregistrement à la base de données Access
d'un Check box.
je veut indiquer que la voiture est climatisé en clickant sur le checkbox donc il me renvoie une valeur boolean.
voici mon code :
....
If ReyCli.Value = vbChecked Then
        RS!VoiClim = -1
        Else
        RS!VoiClim = 0
        End If
....
toujours il m'envoie une erreur.
Pouvez vous m'aider svp a corriger cette erreur pour qu'il puisse enregistrer dans la base access?
Merci à tous !
0