VB.Net Requête SQL avec colonne Oui/Non [Résolu]

Signaler
Messages postés
532
Date d'inscription
lundi 5 juin 2006
Statut
Membre
Dernière intervention
6 octobre 2012
-
Messages postés
532
Date d'inscription
lundi 5 juin 2006
Statut
Membre
Dernière intervention
6 octobre 2012
-
Salut


J'ai un petit problème avec ma requête SQL


J'utilise VB.Net et ADO.Net


Je fais apparaitre l'enssemble de ma Bd dans un DataGrid et tout est OK
Dans ma BD j'ai une colonne qui est Oui/Non


Je ne sais pas comment coder ma requête UPDATE avec ce type de Colonne si l'utilisateur coche un checkbox (Oui/Non)
Ma colonne ayant le Oui/Non se nomme Vis
Voici ma requête avec l'erreur:
Ma colonne Nu = NumeroAuto et les autres colonne sont du Texte.


RequeteSQL = "UPDATE Liste SET Co= '" & DtgListe.CurrentRow.Cells(1).Value & "',Ca= '" & DtgListe.CurrentRow.Cells(2).Value & _"',Cir'" & DtgListe.CurrentRow.Cells(3).Value & "', Vis '" & DtgListe.CurrentRow.Cells(4).Value & _
"' WHERE Nu = " & DtgListe.CurrentRow.Cells(0).Value


Ca bug à mon Data Adapter et ca me dit Type de données incompatible dans l'expression de critère.

13 réponses

Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
36
Ta checkbox comme ta colonne dans la base de données, bien qu'elles affichent Oui/Non sont en réalité de simple boolean.

Elles ne peuvent donc prendre comme valeur que True ou False. Le oui/non que tu voit n'est qu'une représentation.

Donc dans la requette, il faut que tu passe la valeur True ou False (en supprimant les quotes) et non pas un quelconque texte

RequeteSQL = "UPDATE Liste SET Co= '" &
DtgListe.CurrentRow.Cells(1).Value & "',Ca= '" &
DtgListe.CurrentRow.Cells(2).Value & _"',Cir'" & DtgListe.CurrentRow.Cells(3).Value & "', Vis " & DtgListe.CurrentRow.Cells(4).Value & _
" WHERE Nu = " & DtgListe.CurrentRow.Cells(0).Value

---- Sevyc64  (alias Casy) ---- <hr size ="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
36
RequeteSQL = "UPDATE Liste SET Co = '" & DtgListe.CurrentRow.Cells(0).Value & "', Ca = '" & Replace(DtgListe.CurrentRow.Cells(1).Value, "'", "''") & _
"', Ci '" & Replace(DtgListe.CurrentRow.Cells(2).Value, "'" , "''" ) & " ' , Vi " & DtgListe.CurrentRow.Cells(3).Value & _

" WHERE Nu = " & DtgListe.CurrentRow.Cells(4).Value







---- Sevyc64  (alias Casy) ----


<hr size ="2" width="100%" />


# LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
36
Regarde dans ta base de données, tes 5 Vi doivent probalement etre enregistrer dans la colonne Ci suite à tes précédents essais. Il faut probablement que tu y fasse le ménage à la main.

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
Messages postés
532
Date d'inscription
lundi 5 juin 2006
Statut
Membre
Dernière intervention
6 octobre 2012
1
Re...


Ok merci mais j'ai un second problème


Toujours au Data Adapter


Erreur de syntaxe dans la chaîne dans l'expression'False' WHERE Nu =1'.


C'est un bug dans ma BD ACCESS ou bien c'est la requête SQL ???


merci
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
36
Regarde le contenu de ta variable RequeteSQL et vérifie que les valeurs correspondent bien à leur type.

Seules les dates et les string doivent etre encadrées de '
Les nombres et les boolean ne doivent pas etre encadrés de '
Les nombres à virgules doivent normalement etre passés avec le point en séparateur décimal

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
Messages postés
532
Date d'inscription
lundi 5 juin 2006
Statut
Membre
Dernière intervention
6 octobre 2012
1
Salut J'ai trouvé mon erreur venait d'ailleur.


Je peux modifier les colonne qui sont en Texte mais pas la colonne avec le Oui/Non


J'ai quelque peux modifié quelque peu la requête SQL


Je me demande si mon bug provient de la requête ou bien d'ailleurs...


J'ai essayé quelque truc avec le ' mais je n'y arrive pas...

Si tu peux m'éclairer encore... héhéhéhé


merci


RequeteSQL "UPDATE Liste SET Co '" & DtgListe.CurrentRow.Cells(0).Value &
"', Ca = '" & Replace(DtgListe.CurrentRow.Cells(1).Value,
"'",
"''") & _



"', Ci = '"
& Replace(DtgListe.CurrentRow.Cells(2).Value,

"'"
,

"''"
) &

", Vi = "
& DtgListe.CurrentRow.Cells(3).Value & _




"' WHERE Nu = "
& DtgListe.CurrentRow.Cells(4).Value
Messages postés
532
Date d'inscription
lundi 5 juin 2006
Statut
Membre
Dernière intervention
6 octobre 2012
1
J'ai oublier...
avec la requête qui fonctionne pour modifier les colones qui sont en texte j'arrive à une requête qui ressemble à ca
Tu remarquera que j'ai 5 fois Vi=False ??????


Vois-tu pourquoi ?


merci


UPDATE Liste SET Co '01', Ca 'Entré', Ci = 'Mne, Vi = False, Vi = False, Vi = False, Vi = False, Vi = False' WHERE Nu = 2
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
36
Et il n'y a rien qui te choque dans cette requette ?

Déjà 5 fois Vi= False, ça sert à rien, 1 fois suffit.

Et regarde ou sont placé les quotes pour Ci

---- Sevyc64  (alias Casy) ---- <hr size ="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
Messages postés
532
Date d'inscription
lundi 5 juin 2006
Statut
Membre
Dernière intervention
6 octobre 2012
1
Bien sur je ne comprend pas pourquoi ca l'apparait 5 fois... ???

N'oublie pas je suis tres débutant pour les requête SQL

ok je vérifie les quotes pour Ci bien que j'ai essayé plein de truc et ca fonctionne jamais...

Mais selon moi je dois régler le bug de 5 fois Vi=False mais je ne comprend pas pk ca fais cela...

merci encore
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
36
Pourquoi 5 fois ?

Tout simplement parce que tu as une erreur avec les quotes depuis le début surrement et que tu à mis à jours la colonne Ci 5 fois déjà en rajoutant chaque fois ", Vi= False" à la valeur qu'elle contient déjà

---- Sevyc64  (alias Casy) ---- <hr size ="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
Messages postés
532
Date d'inscription
lundi 5 juin 2006
Statut
Membre
Dernière intervention
6 octobre 2012
1
Tu as bien dit: quand c'est du texte je mets des quote sinon pas de cote...
RequeteSQL "UPDATE Liste SET Code '" & DtgListe.CurrentRow.Cells(0).Value &
"', Ca = '" & Replace(DtgListe.CurrentRow.Cells(1).Value,
"'",
"''") & _

"', Ci = '" & Replace(DtgListe.CurrentRow.Cells(2).Value,
"'",
"''") &
"', Vi = " & DtgListe.CurrentRow.Cells(3).Value & _

" WHERE Nu = " & DtgListe.CurrentRow.Cells(4).Value

Pour le moment tout s'enregistre et même la colonne avec les Oui/Non mais je ne saisi vraiment pas comment régler ce bug...
Messages postés
532
Date d'inscription
lundi 5 juin 2006
Statut
Membre
Dernière intervention
6 octobre 2012
1
Salut...

et bien j'ai toujours 5 fois Vi=True qui apparait dans ta requête SQL...

Je n'y comprends rien...

merci
Messages postés
532
Date d'inscription
lundi 5 juin 2006
Statut
Membre
Dernière intervention
6 octobre 2012
1
Je n'ai pas vu de bug dans la table mais j'ai réimporter la table au complet et c'est OK tout est parfait

Merci de ton aide et merci de ta patience

bye