Afficher les lignes dans le dGV à partir d'une partie de mot

aminaxy Messages postés 151 Date d'inscription jeudi 1 septembre 2011 Statut Membre Dernière intervention 18 août 2016 - 13 juin 2014 à 00:53
aminaxy Messages postés 151 Date d'inscription jeudi 1 septembre 2011 Statut Membre Dernière intervention 18 août 2016 - 13 juin 2014 à 10:43
Bonjour,
je suis entrain de faire une application ,avec lequel je doit effectuer un filtrage (sélection de 1èr et 2ème champ de ma table de la base de données=>code,intitulé) selon le code(de type int),ou l'intitulé(de type string),ou le type (combixBox string) ou (détails TextBox string):

En fait,mon problème est que j'ai le problème suivant si je cherche les lignes qui commencent par CAP :

SqlDataAdapter dr;
DataSet ds = new DataSet();
private void button5_Click(object sender, EventArgs e)
{
int a =int.Parse(textBox1.Text); //erreur Là
String b = textBox3.Text;
String c = comboBox1.SelectedItem.ToString();
String d = textBox4.Text;

SqlConnection connection = new SqlConnection(connectionString);
connection.Open();

req="select numero_cpte,intitulé_cpte from compte where numero_cpte="+a+" OR intitulé_cpte='"+b+"' OR type_cpte='"+c+"' OR index_full_text_cpte='"+d+"';";
SqlCommand sql = new SqlCommand(req,connection);
int o = sql.ExecuteNonQuery();
MessageBox.Show(o + " succès");

dr = new SqlDataAdapter(req, connection);
dr.Fill(ds, "compte");
compteDataGridView.DataSource = ds.Tables["compte"];
connection.Close();
voici l'erreur,

selon vous comment je peut chercher dans ma base à partir d'une partie de mot cherché et merci d'avance

2 réponses

jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 344
13 juin 2014 à 01:30
Bonjour,

Si tu veux absolument faire la converstion il te faudra utiliser :
 int a =Convert.ToInt32(textBox1.Text);
 

bien sûr.. ça ne fonctionne QUE si ta textbox ne contient qu'un NOMBRE ENTIER (pas de nombre à virgule..pas de texte...)

Mais bon...Pour faire une requête SQL nul besoin de transformer tes variables en INT même si ce que tu recherches est un nombre...


   Select * from Matable Where num='3'           

fonctionne aussi bien que :
   Select * from Matable Where num=3           



Pour ce qui est de faire une recherche sur une patie de Mot...à la places des "=" il te faut utiliser "like"

   Select * from Matable Where monchampText like '%cap%'          

Cette requête recherchera TOUS ce qui contient le mot "cap" dans le champ.
http://sqlpro.developpez.com/cours/sqlaz/select/#L3.4


0
aminaxy Messages postés 151 Date d'inscription jeudi 1 septembre 2011 Statut Membre Dernière intervention 18 août 2016
13 juin 2014 à 09:51
bonjour Mr jourdan45,
merci pour l'aide j'ai essayé de faire comme vous me dit,mais j'ai un autre erreur le voici:

et voicie mon code,mon DatGridView n'a pas été filtré :( malgré que je pense que ce que j'ai fait est logique

private void button5_Click(object sender, EventArgs e)
{
int a =Convert.ToInt32(textBox1.Text);
String b = textBox3.Text;
String c = comboBox1.SelectedItem.ToString();
String d = textBox4.Text;

SqlConnection connection = new SqlConnection(connectionString);
connection.Open();

req="select numero_cpte,intitulé_cpte from compte where numero_cpte='"+a+"' OR intitulé_cpte like '%"+b+"%' OR type_cpte='"+c+"' OR index_full_text_cpte like'%"+d+"%';";
SqlCommand sql = new SqlCommand(req,connection);
int o = sql.ExecuteNonQuery();
MessageBox.Show(o + " succès"); //ici j'ai -1 succès
dr = new SqlDataAdapter(req, connection);
dr.Fill(ds, "compte");
compteDataGridView.DataSource = ds.Tables["compte"];
connection.Close();
remercie pour l'aide
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 344
13 juin 2014 à 09:56
Bonjour,
Merci de ne pas mettre de capture d'écran de votre message d'erreur mais de nous l'écrire directement... car là...l'image est trop petite et nous en pouvons pas l'agrandir pour lire ce qui y est écrit....
0
aminaxy Messages postés 151 Date d'inscription jeudi 1 septembre 2011 Statut Membre Dernière intervention 18 août 2016
13 juin 2014 à 10:07
l'erreur me dit que le format de la chaîne d'entré est incorrect pour le int (lorsque j'essaye de taper dans lex champs de recherche un code de type int et une partie du mot )
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 344
13 juin 2014 à 10:14
Dans ta textBox1 ? tu as écris quoi EXACTEMENT ?
0
aminaxy Messages postés 151 Date d'inscription jeudi 1 septembre 2011 Statut Membre Dernière intervention 18 août 2016
13 juin 2014 à 10:17
un entier que je sais déjà qu'il existe
0
aminaxy Messages postés 151 Date d'inscription jeudi 1 septembre 2011 Statut Membre Dernière intervention 18 août 2016
13 juin 2014 à 10:21
un autre test que j'ai fait pour tester j'ai laissé le champ de int(numero_cpte)vide et j'ai tapé du texte(intitulé_cpte) pour chercher j'obtient aussi la même erreur!!
0
Rejoignez-nous