Chaque ligne égale à la Requete ou non
Résolu
dylan_garrix
Messages postés
70
Date d'inscription
Statut
Membre
Dernière intervention
-
max -
max -
Bonjour, comme il est indiqué dans le Titre , j'ai une sorte de TextBox multilines d'ou je dois rentre plusieurs références et en cliquand sur le boutton sa m'affiche dans un tableau le "nomArticle" et " CodeArticle" .
et si un des réf n'existe pas dans la base bah il m'affiche juste la réference dans un autre tableau.
j'ai fais une sorte de Boucle ligne par ligne et m'affiche a chaque fois
Je vous montre un peu le code :
Ce que je veut faire c'est de tester chaque ligne et si la réference existe alors afficher sinon afficher dans un autre tableau.
ce qui donne un peu sa !
Aider moi a faire le Test If ( ligne = existe ) ou n'importe quel autre solution
Merci .
et si un des réf n'existe pas dans la base bah il m'affiche juste la réference dans un autre tableau.
j'ai fais une sorte de Boucle ligne par ligne et m'affiche a chaque fois
Je vous montre un peu le code :
protected void Button1_Click(object sender, EventArgs e) { Con.Open(); DataTable dt = new DataTable(); //char delimiter = '\n'; //string[] substrings = search.Text.Split(delimiter); string[] delimiteur = { Environment.NewLine }; // "\r\n" retour chariot ! string[] lignes = search.Text.Split(delimiteur, StringSplitOptions.RemoveEmptyEntries);//cette option à l'avantage de virer les lignes vides. List<Resultat> res = new List<Resultat>(); foreach (var substring in lignes) { SqlDataAdapter SDA1 = new SqlDataAdapter("SELECT NOMARTICLE,CODEARTICLE from woork Where Ref_Art='" + substring + "'", Con); SDA1.Fill(dt); res.Add(new Resultat { NomArticle = (dt.Rows[0].Field<string>(0)), CodeArticle = dt.Rows[0].Field<string>(1), Ref_Art = substring }); } GridView1.DataSource = dt; GridView1.DataBind(); Con.Close(); }
Ce que je veut faire c'est de tester chaque ligne et si la réference existe alors afficher sinon afficher dans un autre tableau.
ce qui donne un peu sa !
DataTable dt = new DataTable(); // Table Ref existe dans la Base DataTable dnt = new DataTablee (); // Table Ref non existe dans la Base foreach ( var Substring in Lignes ) { if ( Substring = existe ) { SqlDataAdapter SDA1 = new SqlDataAdapter("SELECT NOMARTICLE,CODEARTICLE from woork Where Ref_Art='" + substring + "'", Con); SDA1.Fill(dt); res.Add(new Resultat { NomArticle = (dt.Rows[0].Field<string>(0)), CodeArticle = dt.Rows[0].Field<string>(1), Ref_Art = substring }); } else { SqlDataAdapter SDA1 = new SqlDataAdapter("SELECT NOMARTICLE,CODEARTICLE from woork Where Ref_Art='" + substring + "'", Con); SDA1.Fill(dnt); res.Add(new Resultat { NomArticle = (dt.Rows[0].Field<string>(0)), CodeArticle = dt.Rows[0].Field<string>(1), Ref_Art = substring }); } }
Aider moi a faire le Test If ( ligne = existe ) ou n'importe quel autre solution
Merci .
A voir également:
- Chaque ligne égale à la Requete ou non
- Aller à la ligne excel - Guide
- Partager photos en ligne - Guide
- Mètre en ligne - Guide
- Inférieur ou egale clavier - Forum Ubuntu
- Apparaitre hors ligne instagram - Guide
2 réponses
Bonsoir
dans la discussion précédente, je t'avais dit que finalement, la liste ne te sert pas.
donc cette ligne
Et la classe Resultat, peut être supprimée.
Pour ta question, une solution est de conserver le nombre de lignes dans le datatable et s'il n'a pas changer c'est que la référence n'existe pas
dans la discussion précédente, je t'avais dit que finalement, la liste ne te sert pas.
donc cette ligne
res.Add(new Resultat { NomArticle = (dt.Rows[0].Field<string>(0)), CodeArticle = dt.Rows[0].Field<string>(1), Ref_Art = substring });n'a plus lieu d'être.
Et la classe Resultat, peut être supprimée.
Pour ta question, une solution est de conserver le nombre de lignes dans le datatable et s'il n'a pas changer c'est que la référence n'existe pas
pourtant me semble que l'algo est faux non ?
tu as essayé avec une ref connu, une inconnue, une connu, une inconnu ?
dans ce cas me semble pas que sa fonctione
max
tu as essayé avec une ref connu, une inconnue, une connu, une inconnu ?
dans ce cas me semble pas que sa fonctione
max
Il y a sans doute moyen de savoir si une requête ne retourne rien, mais j'ai pas trouvé.
Là tu travailles sur quelques références, mais imagine que tu doivent traiter 10 000 références, avec 2 foreach, tu vas faire 20 000 requêtes, et là le temps d'exécution va s'en ressentir.
Quand on peut faire une seule boucle, il faut le privilégier.
Ceci réponds à ton besoin (tapé de tête)
1 ) List<string> Inconnus = new List<string>();
2 ) if( nombreLignes == dt.Rows.Count)
Inconnus.Add(substring)
else
nombreLignes = dt.Rows.Count;
Si le nombre de lignes dans le datatable est le même qu'avant, y a pas eu de changement donc la référence est inconnue, je la mets dans la liste.
A l'inverse, s'il y a eu une nouvelle ligne, je réactualise la variable pour la prochaine référence