1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur .NET
    Inscrit en
    janvier 2017
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

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

    Informations forums :
    Inscription : janvier 2017
    Messages : 26
    Points : 13
    Points
    13

    Par défaut Conversion de string en int

    Bonjour,

    j'ai eu un problème dans mon code ci-dessous l'erreur est de type "Argument 1: conversion impossible de string en int.

    Voila le code
    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
    Connexion con = new Connexion();
                con.dataGet("select * From Doc where Satus = 'Actif'");            
                SqlDataReader MyReader;
                try
                {
                    MyReader = con.cmd.ExecuteReader();
                    while (MyReader.Read())
                    {
                        string SNom = MyReader.GetString("Nom");
                        comboBox2.Items.Add(SNom);
                    }
                }
                catch(Exception ex)
                {
    
                }
    l'erreur est au niveau de string SNom précisément c'est le Nom qui est souligné.
    Pourriez vous m'aider?

  2. #2
    Membre expérimenté
    Homme Profil pro
    Développeur .Net et Delphi
    Inscrit en
    juillet 2002
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur .Net et Delphi
    Secteur : Finance

    Informations forums :
    Inscription : juillet 2002
    Messages : 606
    Points : 1 370
    Points
    1 370

    Par défaut

    Bonjour,

    Le message est normal. La méthode SqlDataReader.GetString attend un integer en paramètre. Il s'agit du numéro de la colonne (base zéro) : Msdn. Il n'y a pas d'overload de cette méthode permettant de passer une string en paramètre.

  3. #3
    Rédacteur/Modérateur
    Avatar de François DORIN
    Homme Profil pro
    Consultant informatique
    Inscrit en
    juillet 2016
    Messages
    1 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Charente Maritime (Poitou Charente)

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

    Informations forums :
    Inscription : juillet 2016
    Messages : 1 077
    Points : 3 501
    Points
    3 501
    Billets dans le blog
    5

    Par défaut

    Bonjour,

    Comme dit par ebastien, il n'y a pas de surcharge qui prenne le nom de la colonne. Il faut donc le faire en deux étapes : récupérer le numéro de la colonne correspondante, et ensuite récupérer la valeur.

    En rouge, mes modifications :
    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
    using(Connexion con = new Connexion()) 
    {
                con.dataGet("select * From Doc where Satus = 'Actif'");            
                SqlDataReader MyReader;
                try
                {
                    using(MyReader = con.cmd.ExecuteReader())
                    {
                        int colNom = MyReader.GetOrdinal("Nom");
                        while (MyReader.Read())
                        {
                            string SNom = MyReader.GetString(colNom);
                            comboBox2.Items.Add(SNom);
                        }
                    }
                }
                catch(Exception ex)
                {
    
                }
    }
    A noter que j'ai aussi libéré les ressources qui ont besoin d'être libérées (la connexion et le reader), via l'usage du mot clé using
    François DORIN
    Consultant informatique : conception, modélisation, développement (C#/.Net et SQL Server)
    Site internet | Profils Viadéo & LinkedIn
    ---------
    Page de cours : fdorin.developpez.com
    ---------
    N'oubliez pas de consulter la FAQ C# ainsi que les cours et tutoriels

  4. #4
    Membre à l'essai
    Homme Profil pro
    Développeur .NET
    Inscrit en
    janvier 2017
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

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

    Informations forums :
    Inscription : janvier 2017
    Messages : 26
    Points : 13
    Points
    13

    Par défaut

    Merci pour vos message.
    dans mon cas je souhaite afficher toutes les informations de mon table ci dessous dans le combobox nom. En sachant que la colonne Nom_Famille est la troisième colonnes. En comptant normalement colonne 0 correspond à la Civilité, colonne 1 correspond au Matricule et 2 correspond au Nom_Famille voir image. Nom : Info.png
Affichages : 51
Taille : 11,0 Ko
    J'ai fait ça
    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
    void Combobox()
            {
                Connexion con = new Connexion();
                con.dataGet("select * From Doc where Satus = 'Actif'");            
                SqlDataReader MyReader;
                try
                {
                    MyReader = con.cmd.ExecuteReader();
                    int colNom = MyReader.GetOrdinal("Nom_Famille");
                    while (MyReader.Read())
                    {
                        string SNom = MyReader.GetString(2);
                        comboBox2.Items.Add(SNom);
                    }
                }
                catch(Exception ex)
                {
     
                }
            }
    J'ai ajouté dans mon
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public Accès()
            {
                InitializeComponent();
                Combobox();
            }
    Mais rien ne s'affiche dans mon combobox.

  5. #5
    Rédacteur/Modérateur
    Avatar de François DORIN
    Homme Profil pro
    Consultant informatique
    Inscrit en
    juillet 2016
    Messages
    1 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Charente Maritime (Poitou Charente)

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

    Informations forums :
    Inscription : juillet 2016
    Messages : 1 077
    Points : 3 501
    Points
    3 501
    Billets dans le blog
    5

    Par défaut

    Je serais toi, je supprimerai le try/catch dans un premier temps. Car pour l'instant, s'il y a une exception, comme le catch attrape tout mais ne fait rien, tu ne vois rien ! Et je suis prêt à parier qu'il y a une exception qui se produit à un moment ou à un autre...
    François DORIN
    Consultant informatique : conception, modélisation, développement (C#/.Net et SQL Server)
    Site internet | Profils Viadéo & LinkedIn
    ---------
    Page de cours : fdorin.developpez.com
    ---------
    N'oubliez pas de consulter la FAQ C# ainsi que les cours et tutoriels

  6. #6
    Membre à l'essai
    Homme Profil pro
    Développeur .NET
    Inscrit en
    janvier 2017
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

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

    Informations forums :
    Inscription : janvier 2017
    Messages : 26
    Points : 13
    Points
    13

    Par défaut

    en élevant le try et catch il y a une erreur de type "Informations supplémentaires : La référence d'objet n'est pas définie à une instance d'un objet." l'erreur est au niveau de MyReader = con.cmd.ExecuteReader()

  7. #7
    Membre expérimenté
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    mars 2005
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mars 2005
    Messages : 970
    Points : 1 473
    Points
    1 473

    Par défaut

    Citation Envoyé par Dachetache
    en élevant le try et catch il y a une erreur de type "Informations supplémentaires : La référence d'objet n'est pas définie à une instance d'un objet." l'erreur est au niveau de MyReader = con.cmd.ExecuteReader()
    Cela est donc normal que ça ne fonctionne pas.
    Tu as une violation d'accès et plutôt que de chercher à comprendre où çà plante, tu te contente de masquer l'exception.
    C'est un peu comme te cogner contre un poteau et de continuer à foncer dedans après avoir pris un cachet d'aspirine.

    A priori je dirai que "cmd" est à null.


    Pour éviter le problème des colonnes j'ai pour habitude de ne jamais mettre select *.
    Je renseigne toujours les colonnes qui m'intéressent.
    Cela évite de se poser des questions quand à l'ordre des champs (ils sont dans l'ordre où on les a noté)
    Cela évite de passer par un GetOrdinal
    Cela évite d'avoir un champ de type Guid en plus en cas de réplication.

    Au passage, ça compile avec un accent sur "Accès" ?

  8. #8
    Membre à l'essai
    Homme Profil pro
    Développeur .NET
    Inscrit en
    janvier 2017
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

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

    Informations forums :
    Inscription : janvier 2017
    Messages : 26
    Points : 13
    Points
    13

    Par défaut

    Bonjour,

    J'ai trouvé la solution de mon problème. Merci pour vos conseils

Discussions similaires

  1. conversion base string hexa-> int
    Par koda29 dans le forum C
    Réponses: 7
    Dernier message: 14/05/2010, 17h07
  2. Réponses: 2
    Dernier message: 23/02/2009, 11h04
  3. Conversion de String en Int
    Par Gregory.M dans le forum Windows Forms
    Réponses: 12
    Dernier message: 06/01/2009, 11h57
  4. Conversion de String vers int
    Par CyberSlan dans le forum C++
    Réponses: 21
    Dernier message: 30/05/2008, 08h39
  5. [C++] Conversion de String en int
    Par poporiding dans le forum Framework .NET
    Réponses: 2
    Dernier message: 02/01/2006, 16h43

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