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 :

Cannot implicitly convert type 'void' [Débutant]


Sujet :

C#

  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2012
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Niger

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2012
    Messages : 79
    Par défaut Cannot implicitly convert type 'void'
    Bonjour!
    Ce bout de code ci-dessous m'affiche ce message d'erreur suivant: "Cannot implicitly convert type 'void' to 'System.Data.SqlClient.SqlDataReader'"
    Je suis débutant t en c# et j'avoue que ce message est incompréhensible pour moi,c'est pourquoi je me tourne vers vous pour trouver une solution. Merci!

    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 EmployeInfo(int matriculeemploye)
            {
                DataBaseHelper dh = new DataBaseHelper();
                SqlDataReader dr;
                dr = dh.ExecuteReader("Select * from Employe where Matricule = "+matriculeemploye);
                if (dr.Read())
                {
     
                   matricule=dr.GetInt32(Matricule);
                    nom=dr["Nom"].ToString();
                   prenom=dr["Prenom"].ToString();
                   naissance=dr["Date_naiss"].ToString();
                   lieu=dr["Lieu_naiss"].ToString();
                    sexe=dr["Sexe"].ToString();
                   situationfamille=dr["Situation_fam"].ToString();
                    personnecontact=dr["Personnecontact"].ToString();
                   idserv=dr.GetInt32(id_serv);
                    idstatut=dr.GetInt32(id_statut);
     
                }

  2. #2
    Membre chevronné Avatar de Julien698
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2013
    Messages
    237
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2013
    Messages : 237
    Par défaut
    Salut,

    Ta fonction n'est pas fermée et n'a pas de type

  3. #3
    Membre Expert
    Avatar de Sehnsucht
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    847
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Octobre 2008
    Messages : 847
    Par défaut
    Citation Envoyé par Julien698 Voir le message
    Salut,

    Ta fonction n'est pas fermée et n'a pas de type
    Le message d'erreur serait différent s'il s'agissait de ça ; là ce doit être le code d'un constructeur de classe (qui ne possède pas de type de retour).

    Pour en revenir à l'erreur, le message concerne un SqlDataReader qui ne peut être converti depuis un "void" or le seul moment où on assigne un SqlDataReader c'est ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dr = dh.ExecuteReader("Select * from Employe where Matricule = "+matriculeemploye);
    du coup je m'aventurerais à dire que cette méthode (que je ne connais pas vu que le type DataBaseHelper doit être un type personnalisé) est typée comme void et donc que c'est là que ça coince.

    S'il s'agit bien de cela il faut probablement juste changer ce type de retour et renvoyer la bonne valeur dans la méthode concernée.

  4. #4
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2012
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Niger

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2012
    Messages : 79
    Par défaut
    Citation Envoyé par Sehnsucht Voir le message
    Le message d'erreur serait différent s'il s'agissait de ça ; là ce doit être le code d'un constructeur de classe (qui ne possède pas de type de retour).

    Pour en revenir à l'erreur, le message concerne un SqlDataReader qui ne peut être converti depuis un "void" or le seul moment où on assigne un SqlDataReader c'est ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dr = dh.ExecuteReader("Select * from Employe where Matricule = "+matriculeemploye);
    du coup je m'aventurerais à dire que cette méthode (que je ne connais pas vu que le type DataBaseHelper doit être un type personnalisé) est typée comme void et donc que c'est là que ça coince.

    S'il s'agit bien de cela il faut probablement juste changer ce type de retour et renvoyer la bonne valeur dans la méthode concernée.



    En fait c'est une méthode qui va me permettre de Rechercher ou Modifier un enregistrement

    Justement comment faire le renvoi de la bonne valeur comme vous dites?

  5. #5
    Membre Expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Par défaut
    Salut,

    comme dit Sehnsucht le souci vient de ton ExecuteReader qui semble renvoyer du void (ce qui est bizarre vu le nom). Et comme il le précise on ne connait pas ta classe maison DataBaseHelper on ne peut donc pas t'aider au-delà (peut-être qu'elle fonctionne avec un reader interne et qu'il faut passer par un de ses attributs). Si tu as le code de cette classe (et plus précisément de sa méthode ExecuteReader) on pourra t'en dire plus.

    Bon sinon Julien698 a quand même raison : ta fonction n'est pas fermée (erreur de C/C ?) et n'est pas typée (vraie erreur).
    Si c'est une simple procédure (fonction qui ne renvoie rien) alors mets void en type de retour.

  6. #6
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2012
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Niger

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2012
    Messages : 79
    Par défaut
    Citation Envoyé par jopopmk Voir le message
    Salut,

    comme dit Sehnsucht le souci vient de ton ExecuteReader qui semble renvoyer du void (ce qui est bizarre vu le nom). Et comme il le précise on ne connait pas ta classe maison DataBaseHelper on ne peut donc pas t'aider au-delà (peut-être qu'elle fonctionne avec un reader interne et qu'il faut passer par un de ses attributs). Si tu as le code de cette classe (et plus précisément de sa méthode ExecuteReader) on pourra t'en dire plus.

    Bon sinon Julien698 a quand même raison : ta fonction n'est pas fermée (erreur de C/C ?) et n'est pas typée (vraie erreur).
    Si c'est une simple procédure (fonction qui ne renvoie rien) alors mets void en type de retour.


    En fait j'ai trouvé d’où se situe le problème: j'avais crée une méthode :

    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
    public SqlDataReader ExecuteReader(string requete)
            {
                SqlCommand command;
                SqlDataReader reader = null;
                try
                {
                    maConnexion = new SqlConnection(connStr);
                    maConnexion.Open();
                }
                catch (Exception ex)
                {
                    MessageBox.Show("ERREUR DE CONNEXION AU SERVEUR:" + ex.Message);
                }
    
                command = maConnexion.CreateCommand();
                command.CommandText = requete;
                command.CommandType = CommandType.Text;
                try
                {
                    reader = command.ExecuteReader(CommandBehavior.CloseConnection);
    
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.ToString());            
                }
                command.Dispose();
                return reader ;
    juste après public j'ai mis Void par inadvertance au lieu SqlDataReader en rouge
    le problème est résolu,grand merci à vous tous!

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 01/05/2012, 14h25
  2. Réponses: 4
    Dernier message: 08/11/2010, 17h27
  3. Réponses: 6
    Dernier message: 20/08/2009, 17h06
  4. Réponses: 6
    Dernier message: 22/07/2009, 16h27
  5. Réponses: 3
    Dernier message: 21/08/2008, 14h33

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