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

Windows Forms Discussion :

Conversion de string en int


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2017
    Messages
    63
    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 : 63
    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 Expert
    Homme Profil pro
    Développeur .Net / Delphi
    Inscrit en
    Juillet 2002
    Messages
    738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

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

    Informations forums :
    Inscription : Juillet 2002
    Messages : 738
    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
    Expert confirmé

    Avatar de François DORIN
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2016
    Messages
    2 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Charente Maritime (Poitou Charente)

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

    Informations forums :
    Inscription : Juillet 2016
    Messages : 2 761
    Billets dans le blog
    21
    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

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2017
    Messages
    63
    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 : 63
    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 : 262
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
    Expert confirmé

    Avatar de François DORIN
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2016
    Messages
    2 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Charente Maritime (Poitou Charente)

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

    Informations forums :
    Inscription : Juillet 2016
    Messages : 2 761
    Billets dans le blog
    21
    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...

  6. #6
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2017
    Messages
    63
    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 : 63
    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
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 996
    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 : 2 996
    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" ?

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