IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Champs vide base sql


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 31
    Par défaut Champs vide base sql
    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

  2. #2
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2008
    Messages
    337
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 337
    Par défaut
    Pour savoir s'il y a quelque chose dans ton datareader :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if(reader.Read())
    {
    //traitement
    }
    Bonne journée a+

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 31
    Par défaut
    Rooo la conne. Je l'ais fait pour toute mes autres procédures dans mes différentes dal. Rooo que je suis ...

    Comme je disait c'est pas plus complique que ca. Il est peut être temps de faire une pause.

    Grand merci à toi

  4. #4
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2008
    Messages
    337
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 337
    Par défaut
    il n'y a pas de quoi.

    Bonne pause et bonne fin de journée.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Requête d'un champ vide alors que dans la base ce champ est non vide
    Par lex_22 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 18/04/2008, 23h29
  2. Problème de champ vide dans une base sql
    Par lionel256 dans le forum VB.NET
    Réponses: 13
    Dernier message: 16/04/2008, 17h07
  3. Insérer des champs vides dans une requête sql
    Par js8bleu dans le forum Langage SQL
    Réponses: 4
    Dernier message: 19/02/2008, 15h00
  4. Réponses: 5
    Dernier message: 10/05/2006, 15h47
  5. Pb sur une requête SQL (de champ vide)
    Par Marion dans le forum Langage SQL
    Réponses: 3
    Dernier message: 01/07/2004, 11h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo