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

cs_MagDix 532 Messages postés lundi 5 juin 2006Date d'inscription 6 octobre 2012 Dernière intervention - 10 avril 2008 à 20:14 - Dernière réponse : cs_MagDix 532 Messages postés lundi 5 juin 2006Date d'inscription 6 octobre 2012 Dernière intervention
- 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.
Afficher la suite 

13 réponses

Répondre au sujet
cs_casy 7745 Messages postés mercredi 1 septembre 2004Date d'inscription 24 septembre 2014 Dernière intervention - 10 avril 2008 à 20:18
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_casy
cs_casy 7745 Messages postés mercredi 1 septembre 2004Date d'inscription 24 septembre 2014 Dernière intervention - 10 avril 2008 à 22:00
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_casy
cs_casy 7745 Messages postés mercredi 1 septembre 2004Date d'inscription 24 septembre 2014 Dernière intervention - 11 avril 2008 à 12:23
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_casy
cs_MagDix 532 Messages postés lundi 5 juin 2006Date d'inscription 6 octobre 2012 Dernière intervention - 10 avril 2008 à 20:33
0
Utile
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
Commenter la réponse de cs_MagDix
cs_casy 7745 Messages postés mercredi 1 septembre 2004Date d'inscription 24 septembre 2014 Dernière intervention - 10 avril 2008 à 20:52
0
Utile
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
Commenter la réponse de cs_casy
cs_MagDix 532 Messages postés lundi 5 juin 2006Date d'inscription 6 octobre 2012 Dernière intervention - 10 avril 2008 à 21:20
0
Utile
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
Commenter la réponse de cs_MagDix
cs_MagDix 532 Messages postés lundi 5 juin 2006Date d'inscription 6 octobre 2012 Dernière intervention - 10 avril 2008 à 21:31
0
Utile
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
Commenter la réponse de cs_MagDix
cs_casy 7745 Messages postés mercredi 1 septembre 2004Date d'inscription 24 septembre 2014 Dernière intervention - 10 avril 2008 à 21:42
0
Utile
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
Commenter la réponse de cs_casy
cs_MagDix 532 Messages postés lundi 5 juin 2006Date d'inscription 6 octobre 2012 Dernière intervention - 10 avril 2008 à 21:49
0
Utile
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
Commenter la réponse de cs_MagDix
cs_casy 7745 Messages postés mercredi 1 septembre 2004Date d'inscription 24 septembre 2014 Dernière intervention - 10 avril 2008 à 21:54
0
Utile
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
Commenter la réponse de cs_casy
cs_MagDix 532 Messages postés lundi 5 juin 2006Date d'inscription 6 octobre 2012 Dernière intervention - 10 avril 2008 à 22:06
0
Utile
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...
Commenter la réponse de cs_MagDix
cs_MagDix 532 Messages postés lundi 5 juin 2006Date d'inscription 6 octobre 2012 Dernière intervention - 11 avril 2008 à 12:19
0
Utile
Salut...

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

Je n'y comprends rien...

merci
Commenter la réponse de cs_MagDix
cs_MagDix 532 Messages postés lundi 5 juin 2006Date d'inscription 6 octobre 2012 Dernière intervention - 11 avril 2008 à 13:52
0
Utile
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
Commenter la réponse de cs_MagDix

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.