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
36066
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 août 2022
351
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
36066
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 août 2022
351
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
36066
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 août 2022
351
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