VB.Net Requête SQL avec colonne Oui/Non

Résolu
cs_MagDix Messages postés 531 Date d'inscription lundi 5 juin 2006 Statut Membre Dernière intervention 6 octobre 2012 - 10 avril 2008 à 20:14
cs_MagDix Messages postés 531 Date d'inscription lundi 5 juin 2006 Statut Membre Dernière intervention 6 octobre 2012 - 11 avril 2008 à 13:52
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

cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
10 avril 2008 à 20:18
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
3
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
10 avril 2008 à 22:00
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
3
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
11 avril 2008 à 12:23
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
3
cs_MagDix Messages postés 531 Date d'inscription lundi 5 juin 2006 Statut Membre Dernière intervention 6 octobre 2012 1
10 avril 2008 à 20:33
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
0

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

Posez votre question
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
10 avril 2008 à 20:52
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
0
cs_MagDix Messages postés 531 Date d'inscription lundi 5 juin 2006 Statut Membre Dernière intervention 6 octobre 2012 1
10 avril 2008 à 21:20
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
0
cs_MagDix Messages postés 531 Date d'inscription lundi 5 juin 2006 Statut Membre Dernière intervention 6 octobre 2012 1
10 avril 2008 à 21:31
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
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
10 avril 2008 à 21:42
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
0
cs_MagDix Messages postés 531 Date d'inscription lundi 5 juin 2006 Statut Membre Dernière intervention 6 octobre 2012 1
10 avril 2008 à 21:49
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
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
10 avril 2008 à 21:54
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
0
cs_MagDix Messages postés 531 Date d'inscription lundi 5 juin 2006 Statut Membre Dernière intervention 6 octobre 2012 1
10 avril 2008 à 22:06
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...
0
cs_MagDix Messages postés 531 Date d'inscription lundi 5 juin 2006 Statut Membre Dernière intervention 6 octobre 2012 1
11 avril 2008 à 12:19
Salut...

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

Je n'y comprends rien...

merci
0
cs_MagDix Messages postés 531 Date d'inscription lundi 5 juin 2006 Statut Membre Dernière intervention 6 octobre 2012 1
11 avril 2008 à 13:52
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
0
Rejoignez-nous