Requete 'like'

scortex84 Messages postés 379 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 20 avril 2011 - 30 janv. 2007 à 16:50
 Damiens29 - 1 mars 2013 à 11:49
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

ducker88 Messages postés 277 Date d'inscription lundi 9 février 2004 Statut Membre Dernière intervention 4 mai 2008
30 janv. 2007 à 16:59
salut, quel est le type de ton champ "cp" ?

duck88
0
scortex84 Messages postés 379 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 20 avril 2011 1
30 janv. 2007 à 18:03
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 ?
0
romagny13 Messages postés 687 Date d'inscription lundi 10 janvier 2005 Statut Membre Dernière intervention 27 août 2014 3
30 janv. 2007 à 19:15
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

++
0
ducker88 Messages postés 277 Date d'inscription lundi 9 février 2004 Statut Membre Dernière intervention 4 mai 2008
30 janv. 2007 à 19:36
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
0

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

Posez votre question
romagny13 Messages postés 687 Date d'inscription lundi 10 janvier 2005 Statut Membre Dernière intervention 27 août 2014 3
30 janv. 2007 à 19:58
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
++
0
TheSaib Messages postés 2367 Date d'inscription mardi 17 avril 2001 Statut Membre Dernière intervention 26 décembre 2007 23
31 janv. 2007 à 01:43
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
0
scortex84 Messages postés 379 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 20 avril 2011 1
31 janv. 2007 à 09:40
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.
0
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
31 janv. 2007 à 10:23
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]
0
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 ^^ ?
0
Rejoignez-nous