cs_MagDix
Messages postés531Date d'inscriptionlundi 5 juin 2006StatutMembreDernière intervention 6 octobre 2012
-
9 janv. 2009 à 17:28
cs_demonstorm
Messages postés29Date d'inscriptionsamedi 2 juin 2007StatutMembreDernière intervention 7 mars 2011
-
14 janv. 2009 à 17:27
Bonjour à tous...
J'ai un petit problème avec un requête SQL et le caractère underscore "_"
Voici ma Requête SQL qui fonctionne très bien à l'expection du "_"
Private Sub txtRecherche_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtRecherche.TextChanged
RequeteSQL = "select MaTable.* from MaTable where NomItem like '%" & Replace(txtRecherche.Text, "'", "''") & "%' "
.....
End Sub
J'utilise un textbox et à chaque fois que je mets du texte, cela fais la requête SQL afin de faire afficher les résultats du textbox
dans un DataGridView.
Mon Bug:
J'ai des item qui peuvent se nommer par exemple
10-002
10_002
Si j'inscrit dans mon textbox (pour faire une recherche dans ma BD) l'item 10_002 alors il apparait dans le DataGridView
l'item 10_002 et 10-002. Mais il devrait afficher seulement l'item 10_002
Ma question: Dans un requête SQL, le Underscore ("_") est-il percu comme un trait d'union ("-")
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 13 janv. 2009 à 16:54
Non
Comme tu l'auras vu dans n'importe quelle source qui parle de SQL, les varaibles VB contenant le texte à chercher doivent être sorties des "
Cet exemple n'était qu'un indice :
"Select * from maTable Where leChamp Like '%" & début & "[_]%'"
Dans ton exemple passé en message privé (grrr) :
"Select maTable.* from maTable Where monChamp Like '%ChaineGauche[_]ChaineDroite%'"
Tel que tu l'écris, il s'agit de texte en dur, pas de variables. Est-ce le cas ?
Si ce sont des variables VB contenant le texte à chercher, il faut les faire sortir des " :
RequeteSQL = "Select maTable.* " & _
" From maTable " & _
" Where monChamp Like '%" & ChaineGauche & _
"[_]" & ChaineDroite & "%'"
D'autre part, si tu cherches quelque chose qui ressemble à AB-0123-456, pourquoi vouloir utiliser les _ ?
Cette syntaxe [_] n'est utile que lorsque ce que tu recherches comporte un _.
En général, en VB pour SQL, on n'utilise jamais de TextBox directement puisqu'il faut traiter les cas particuliers comme les ", les ', les _ ou les %
Donc, il vaut mieux recopier le contenu de la TextBox dans une variable et utiliser la fonction Replace à quatre reprises :
" --> ""
' --> ''
_ --> [_]
% --> [%]
Charge quelques sources qui parlent de DB, tu en apprendras plus.
Pourquoi je ne réponds pas aux messages privés : Parce que les forums sont là pour répondre aux questions pour les gens qui cherchent des solutions. Si je te réponds en privé, tu seras le seul à en profiter alors que ces explications peuvent servir à d'autres.
Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés
<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 9 janv. 2009 à 19:29
Salut
Le symbole "_" est un symbole réservé sous SQL : Il remplace n'importe quel caractère unique (dans un Like).
Si tu dois chercher ce symbole parmi tes données, il faut l'encadrer par des crochets droits [ et ], exemple
"Select * from maTable Where leChamp Like '%début[_]fin%'"
pour trouver les champs cmportant le texte "début_fin" dans ses données
Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés
<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
cs_MagDix
Messages postés531Date d'inscriptionlundi 5 juin 2006StatutMembreDernière intervention 6 octobre 20121 12 janv. 2009 à 19:16
Salut...
et bien il ne tient pas compte du _ dans ta proposition de requête.
je sais que je n'ai pas d'erreur dans ma variable Debut et Fin. J'ai même essayé avec seulement la variable Debut et ca ne fonctionne pas non plus... Pourrait-il manquer une information dans la requête ??
Merci d'avance
"Select * from maTable Where leChamp Like '%début[_]%'"
cs_demonstorm
Messages postés29Date d'inscriptionsamedi 2 juin 2007StatutMembreDernière intervention 7 mars 2011 14 janv. 2009 à 17:27
Salut,
j'ai un souci, j'essaye de faire un logiciel qui va faire du SELECT dans une db mysql, mais mon souci est que je n'arrive pas à trouver la syntaxe pour connecter mon logiciel à mysql...
j'utilise VBNet 2008 et actuelement la syntaxe que j'ai reussi à faire et qui fonctionne est faites pour se connecter à sqlserver 2005...
si je pouvez avoir un coup de main ca serai vachement sympa!
merci d'avance...
bonne année à vous...