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 :

Besoin de correction sur ma fonction.


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de solaar
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    607
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2007
    Messages : 607
    Par défaut Besoin de correction sur ma fonction.
    Bonjour.
    j'ai une table Etiquette(N° Etiquette,Etiquette);
    je veux créer une fonction pour afficher mes étiquettes sur certains contrôle comme bouton et autres mes j'ai une erreur qui me fatigue sur ma fonction.
    can you help me?

    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
     
     public string Afficher_Etiquette_par_Default(int valeur)
            {
     
                string queryString = "SELECT [N° Etiquette],[Etiquette]FROM [GestionDB].[dbo].[Etiquettes]";
     
                using (SqlConnection connection = new SqlConnection(GetConnectionString()))
                {
                    SqlCommand command = new SqlCommand(queryString, connection);
                    connection.Open();
                    SqlDataReader reader = command.ExecuteReader();
                    try
                    {
                        while (reader.Read())
                        {
                            if (valeur==(int)reader[0])
                            {
                                return reader[1].ToString(); 
                            }
                        }
                    }
                    finally
                    {
                          reader.Close();
                    }
     
                }
     
     
            }

    l'erreur est affichée est :
    Erreur 1 '.Sécurités___Ouverture.Afficher_Etiquette_par_Default(int)' : tous les chemins de code ne retournent pas nécessairement une valeur
    pour l'affiche sur mon bouton:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    bt_Annuler.Text = Afficher_Etiquette_par_Default(10);

  2. #2
    Max
    Max est déconnecté
    Expert confirmé

    Avatar de Max
    Homme Profil pro
    Artisan développeur
    Inscrit en
    Mai 2007
    Messages
    2 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Artisan développeur
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2007
    Messages : 2 954
    Par défaut
    Salut.

    Ton problème est le suivant : si la condition valeur == (int)reader[0] n'est jamais rencontrée, alors l'instruction return n'est jamais appelée, et le programme va en fin de fonction et n'a rien à retourner : il faut donc que tu mettes une sorte de return par défaut en fin de fonction :
    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
    public string Afficher_Etiquette_par_Default(int valeur) {    
        string queryString = "SELECT [N° Etiquette],[Etiquette]FROM [GestionDB].[dbo].[Etiquettes]";
        using (SqlConnection connection = new SqlConnection(GetConnectionString())) {
            SqlCommand command = new SqlCommand(queryString, connection);
            connection.Open();
            SqlDataReader reader = command.ExecuteReader();
            try {
                while (reader.Read()) {
                    if (valeur == (int)reader[0]) {
                        return reader[1].ToString(); 
                    }
                }
            }
            finally {
                  reader.Close();
            }
        }
        // Le programme arrive ici
        return -1;
    }

  3. #3
    Modérateur

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2007
    Messages
    1 996
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 996
    Par défaut
    Ton erreur est assez parlante...
    Tu es dans une fonction, quoi qu'il arrive tu dois donc forcément retourner une valeur.
    Or, si ton SQLDataReader ne contient aucun élément, tu ne renverra rien.

    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
     public string Afficher_Etiquette_par_Default(int valeur)
            {
                string etiquetteLibelle = string.Empty;
     
                string queryString = "SELECT [N° Etiquette],[Etiquette]FROM [GestionDB].[dbo].[Etiquettes]";
     
                using (SqlConnection connection = new SqlConnection(GetConnectionString()))
                {
                    SqlCommand command = new SqlCommand(queryString, connection);
                    connection.Open();
                    SqlDataReader reader = command.ExecuteReader();
                    try
                    {
                        while (reader.Read())
                        {
                            if (valeur==(int)reader[0])
                            {
                                etiquetteLibelle = reader[1].ToString(); 
                            }
                        }
                    }
                    finally
                    {
                          reader.Close();
                    }
     
                }
                return etiquetteLibelle;
     
            }
    ainsi, on initialise systématiquement une variable dans ton type de retour (string). On lui affecte une valeur si on trouve la valeur voulue dans le DataReader et on retourne cette variable.

    A ton IHM par la suite de gérer le fait que la valeur retournée puisse être une chaine vide.

  4. #4
    Membre éclairé Avatar de solaar
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    607
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2007
    Messages : 607
    Par défaut
    super c'est cool.
    j'ai pris l'exemple de calagan99 que j'ai bien compris, par contre celui de eusebe19 il marche bien mais je comprend pas pour quoi return -1 au lieu de 1 ou 0.

  5. #5
    Max
    Max est déconnecté
    Expert confirmé

    Avatar de Max
    Homme Profil pro
    Artisan développeur
    Inscrit en
    Mai 2007
    Messages
    2 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Artisan développeur
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2007
    Messages : 2 954
    Par défaut
    Citation Envoyé par solaar Voir le message
    super c'est cool.
    j'ai pris l'exemple de calagan99 que j'ai bien compris, par contre celui de eusebe19 il marche bien mais je comprend pas pour quoi return -1 au lieu de 1 ou 0.
    Bah déjà, je me suis gouré j'avais cru que tu retournais un int et pas un string

    Et -1 c'est souvent la valeur de retour par défaut pour un int quand rien n'a été trouvé (comme string.IndexOf, etc.)

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

Discussions similaires

  1. NATURAL : Besoin d'aide sur une fonction
    Par Antichoc dans le forum Cobol
    Réponses: 2
    Dernier message: 19/07/2011, 17h00
  2. Besoin d'explication sur les fonctions
    Par amateurc dans le forum Général Java
    Réponses: 7
    Dernier message: 05/01/2010, 14h32
  3. besoin d'aide sur les fonctions
    Par magic73 dans le forum ActionScript 1 & ActionScript 2
    Réponses: 1
    Dernier message: 20/03/2008, 08h59
  4. Besoin d'aide sur une fonction
    Par PrinceMaster77 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 30/08/2005, 17h40
  5. Besoin d'aide sur les fonction d'interbase
    Par BOUBOU81 dans le forum InterBase
    Réponses: 2
    Dernier message: 05/11/2004, 10h00

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