Requete 'like'

Signaler
Messages postés
379
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
20 avril 2011
-
 Damiens29 -
Bonjour,

Dans visual studio 2005, il est possible de créer des datasets typés et d'ajouter en quelques clics des requetes sql du type "selectionne moi tous les clients qui habitent Avignon"

Ca marche nickel. Là j'essaye de faire la même chose avec un like, et j'obtiens n'importe quoi. Ma requete :

SELECT cp, departement, id_unique, insee, nom FROM ville WHERE (cp LIKE @code_postal)

Et en paramètre, je passe "84%"

Et là j'obtiens... rien (alors que bien sur il y a des communes dans le 84...) Si je passe "84000", ça me sort Avignon.

Le serveur est un SQL serveur 2005 Express

Une idée ?

Merci !

9 réponses

Messages postés
277
Date d'inscription
lundi 9 février 2004
Statut
Membre
Dernière intervention
4 mai 2008

salut, quel est le type de ton champ "cp" ?

duck88
Messages postés
379
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
20 avril 2011
1
C'est un varchar. Et là tu vas me dire "mais pourquoi il n'y a pas plutot like [mailto:'@code_postal' '@code_postal'] " ? La réponse : j'ai essayé, mais du coup, ce n'est plus pris comme un paramètre... Alors là je sais plus !

Une idée ?
Messages postés
687
Date d'inscription
lundi 10 janvier 2005
Statut
Membre
Dernière intervention
27 août 2014
2
ba a la rigueur
en 1 - tu remplis ton datset avec une requete classique de maniere a avoir l'ensemble des enregistrements

ex : SELECT cp, departement, id_unique, insee, nom FROM ville

en 2 - tu fais un filtre à l'affichage
this.NomDataSet.NomDataTable.DefaultView.RowFilter="cp LIKE '%" & unevariableOuAutre & "%'";

tu peux egalement filtrer en passant par l'intermediaire
- d'un bindsource
- ou utiliser une DataView

++
Messages postés
277
Date d'inscription
lundi 9 février 2004
Statut
Membre
Dernière intervention
4 mai 2008

Si c'est des codes postal uniquement français tu peu également le mettre en entier sur 5, l'algo n'en est pas plus compliqué...

duck88
Messages postés
687
Date d'inscription
lundi 10 janvier 2005
Statut
Membre
Dernière intervention
27 août 2014
2
ouai je viens d'essayer de configurer un tableadapter comme toi (car le sujet m'interesse qauand meme)
et cela me fait exactement pareil
il faut mettre la valeur exacte(meme avec les espaces !!) apparemment
sinon je vais un pêu chercher et je te tiens au courant si j'ai du nouveau

sinoin meme si le contraire est dit parfois (meme dans certaines presentations Microsoft) je pense que le datset et les tableadapters ne sont pas vraiment pour executer ce type de requete complexe , en fait avec le mode deconnecte il me semble : il faut pour le mieux
> 1 charger l'ensemble des enregistrements des tables dont a besoin dans un dataSet et datatables et non faire une restriction
> 2 afin de travailler en local, on filtre en fait l'affichage

la preuve en est (que je ne dise pas de betises) c'est que meme lorsuqe tu reconfigures le tableadapter avec une requte parametree comme toi la, les requets de mises a jour ne sont plus en "phase" voir pas générée ce qui fait qu'en fait on est un peu pié gé a ne pouvoir en fait que faire de la consultation

je te tiens au courant si je trouve des trucs interessants
++
Messages postés
2368
Date d'inscription
mardi 17 avril 2001
Statut
Modérateur
Dernière intervention
26 décembre 2007
19
SELECT cp, departement, id_unique, insee, nom FROM ville WHERE (cp LIKE @code_postal)

cmd.Parameters.AddWithValue("@code_postal","%" + valeur + "%");

Ca devrait marcher.

::|The S@ib|:: MVP C#.NET
Messages postés
379
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
20 avril 2011
1
Merci beaucoup pour toutes vos réponses. Je sais bien qu'en codant tout ça, cela fonctionne. Mais le but de la manoeuvre, c'est d'utiliser les tableadapter et l'assistant de visual studio 2005 (je sais, c'est mieux de tout codé et tout et tout, mais dans RAD, il y a Rapide, et sur le coup, c'est rapide !).

Donc j'ai toujours pas la solution, et je cherche... je cherche !

Merci encore pour tous vos messages.

Seb.
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
33
hum... : "Si c'est des codes postal uniquement français tu peu également le mettre en entier sur 5, l'algo n'en est pas plus compliqué..."

oui... c'est comme ca qu'on se retrouve avec des codes postaux 2600... au lieu de 02600 !

Sébastien FERRAND (blog)
Consultant Indépendant
[Microsoft Visual C# MVP]
Bonjour,

je reviens vers ce thread car j'ai exactement le même probléme.Quelqu'un aurait-il trouver une solution depuis le 31 janvier 2007 ^^ ?