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:

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
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.

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.

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");
 
                }
            }
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 :
Tentative non valide de lecture lorsque aucune donnée n'est présente.
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 ?

Ou le faire au niveau du code de ma dal ?
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;
            }
J'suis un peu bloquer et je ne vois vraiment pas comme faire pour faire mon test de codebarre.

Un grand merci de votre aide