Bonjour,
Alors voila, je supposes que ca doit être très con à résoudre mais je ne trouve pas la solution.
J'ai une table Article avec différents champs a l'intérieur, une procédure qui me permets de faire une recherche sur le code barre:
Tout ca fonctionne très bien. En avancant dans mon application je me suis rendu compte qu'il fallait que je fasse un test sur mon codebarre. En effet un article -> un codebarre.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 Create PROCEDURE [dbo].[usp_getArticleByCodeBarre] @CodeBarre_Article varchar(13) AS BEGIN SELECT Id_Article, Nom_Article, Designation, Qte_Stock, Prix_Vente_Article FROM dbo.Article WHERE CodeBarre_Article = @CodeBarre_Article END
Donc j'ai mon formulaire InsertArticle ou je peux encoder tout mes différents champs et j'ai fait un test sur le champs txt_codebarre pour savoir si celui-ci existait ou pas dans la base. Ca marche très bien.
Le seul soucis que j'ai c'est que si il n'existe pas, et c'est logique il me renvoi une erreur comme quoi :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 if (txt_codebarre.Text == "") { return; } else { Regex regex = new Regex("^[0-9-+]*$"); if (regex.IsMatch(txt_codebarre.Text)) { ArticleService servart = new ArticleService(); Article art = new Article(); art = servart.getArticleByCB(txt_codebarre.Text); if (art.Nom_Article != null) { MessageBox.Show("Ce code barre existe déja", "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); txt_codebarre.Text = ""; } } else { txt_codebarre.Text = ""; errorProvider1.SetError(txt_codebarre, "Seulement des chiffres"); } }Y aurait-il un moyen au niveau de la procédure stockée avec un if exist blabla else ben tu renvoi rien? un return ?Tentative non valide de lecture lorsque aucune donnée n'est présente.
Ou le faire au niveau du code de ma dal ?
J'suis un peu bloquer et je ne vois vraiment pas comme faire pour faire mon test de codebarre.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42 try { using (SqlConnection myConn = new SqlConnection(DAL_Coffee.Properties.Settings.Default.ConnectCoffee)) { using (SqlCommand myCmd = new SqlCommand("usp_getArticleByCodeBarre", myConn)) { myCmd.Parameters.Clear(); myCmd.CommandType = CommandType.StoredProcedure; myCmd.Parameters.Add(new SqlParameter("@CodeBarre_Article", CodeBarre)); if (myConn.State == ConnectionState.Closed) { myConn.Open(); } SqlDataReader reader = myCmd.ExecuteReader(); reader.Read(); Article article = new Article(); article.Id_Article = new guid(reader["Id_Article"].ToString()); article.Nom_Article = reader["Nom_Article"].ToString(); article.Designation = reader["Designation"].ToString(); article.Qte_Stock = Convert.ToInt16(reader["Qte_Stock"]); article.Prix_Vente_Article = Convert.ToDecimal(reader["Prix_Vente_Article"]); reader.Close(); myConn.Close(); return article; } } } catch (SqlException ex) { throw ex; } catch (Exception ex) { throw ex; }
Un grand merci de votre aide
Partager