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 :

Problème de convertion d'une variable.


Sujet :

Windows Forms

  1. #1
    Membre actif Avatar de DarkSeiryu
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2009
    Messages
    425
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2009
    Messages : 425
    Points : 275
    Points
    275
    Par défaut Problème de convertion d'une variable.
    Bijour !

    Alors, j'ai une fonction qui est censé me retourné un int et cet int reçoit les données d'une requête SQL.
    Voici 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
    public int SQL_1x1_int_string(string unChamp, string uneTable, string unChamp2, string unParam)
        {
            this.fctConnectDB();
            OdbcCommand cmdSelect = new OdbcCommand();
            cmdSelect.Connection = connectionDB;
            cmdSelect.CommandText = "SELECT " + unChamp + " FROM " + uneTable + " WHERE " + unChamp2 + " = '" + unParam + "'";
            OdbcDataAdapter my_DA = new OdbcDataAdapter(cmdSelect);
            DataTable my_DT = new DataTable();
            my_DA.Fill(my_DT);
     
            int uneDonnee = my_DT.Rows[0][unChamp] as int;
            this.fctDisconnectDB();
            return uneDonnee;
        }
    Cependant, j'ai une erreur lors de l'éxécution :
    L'opérateur as doit être utilisé avec un type référence ou un type nullable ('int' est un type de valeur non-nullable)
    Et j'ai beau changer le type de convertion (j'ai essayé un case ou de faire un System.Convert.ToInt32(my_DT.Rows[0][unChamp]) mais rien ne change :/

    Quelqu'un voit d'où vient le problème ?

    Merci d'avance.

  2. #2
    Expert éminent
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Points : 8 344
    Points
    8 344
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int uneDonnee = (int)my_DT.Rows[0][unChamp];
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int uneDonnee = Convert.ToInt32(my_DT.Rows[0][unChamp]);
    ?

  3. #3
    Membre actif Avatar de DarkSeiryu
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2009
    Messages
    425
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2009
    Messages : 425
    Points : 275
    Points
    275
    Par défaut
    Oui c'est ce que j'ai essayé :
    Citation Envoyé par DarkSeiryu
    Et j'ai beau changer le type de convertion (j'ai essayé un cast ou de faire un System.Convert.ToInt32(my_DT.Rows[0][unChamp]) mais rien ne change :/

  4. #4
    Membre actif Avatar de DarkSeiryu
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2009
    Messages
    425
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2009
    Messages : 425
    Points : 275
    Points
    275
    Par défaut
    Euh, j'suis en train de me dire que j'ai pas précisé quelques trucs ^^

    En fait c'est pour un site Web et si je lance le débogage du code (avec F6), il ne me renvoie aucune erreur, mais lorsque que je demande qu'il m'affiche la donnée retournée avec cette méthode dans un label de ma page Web, il me sort une erreur différente selon si je fais avec le cast ou avec le Convert :
    cast :
    System.InvalidCastException: Le cast spécifié n'est pas valide.
    Convert :
    System.FormatException: Le format de la chaîne d'entrée est incorrect.
    :/

  5. #5
    Expert éminent
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Points : 8 344
    Points
    8 344
    Par défaut
    Tu es sur du type de l'objet renvoyé par my_DT.Rows[0][unChamp] ?
    Au besoin, regarde ce que renvois my_DT.Rows[0][unChamp].GetType() et my_DT.Rows[0][unChamp].ToString()

  6. #6
    Membre actif Avatar de DarkSeiryu
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2009
    Messages
    425
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2009
    Messages : 425
    Points : 275
    Points
    275
    Par défaut
    J'ai fait ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    string test = my_DT.Rows[0][unChamp].GetType().ToString();
    Quand je lance le débogage avec un point d'arrêt sur la ligne citée au dessus, test contient "System.String".

    C'est donc là qu'on me dit, "ben au lieu de faire une conversion, fais en sorte que ce soit un string qui reçoive la donnée en question et que ta méthode retourne un string".
    Oui mais non, parce que j'ai besoin d'afficher un int, et qu'une autre méthode me retourne un string.

    Donc, qu'est-ce qui bug ?

  7. #7
    Expert éminent
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Points : 8 344
    Points
    8 344
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int.Parse((string)my_DT.Rows[0][unChamp]);

  8. #8
    Membre actif Avatar de DarkSeiryu
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2009
    Messages
    425
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2009
    Messages : 425
    Points : 275
    Points
    275
    Par défaut
    Même erreur :S
    --->
    System.FormatException: Le format de la chaîne d'entrée est incorrect.

  9. #9
    Expert éminent
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Points : 8 344
    Points
    8 344
    Par défaut
    Ralala
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (string)my_DT.Rows[0][unChamp]
    ça affiche quoi comme valeur ?

  10. #10
    Membre actif Avatar de DarkSeiryu
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2009
    Messages
    425
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2009
    Messages : 425
    Points : 275
    Points
    275
    Par défaut
    Nan c'est bon problème résolu avec un cast simple.

    C'est ma faute, lors de l'appel de la méthode, la variable unChamp ne contenait que des string, c'est pourquoi ça ne convenait pas... :/

    Désolé j'ai fait n'imp' ^^

    Merci smyley !

    Ah juste une petite question, cette ligne que tu m'as donné :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int.Parse((string)my_DT.Rows[0][unChamp]);
    Elle fait quoi exactement ? C'est quoi Parse ?

  11. #11
    Expert éminent
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Points : 8 344
    Points
    8 344
    Par défaut
    Quand tu as un doute sur une fonction, appelle la MSDN à la rescousse
    http://msdn.microsoft.com/fr-fr/libr...t32.parse.aspx

  12. #12
    Membre actif Avatar de DarkSeiryu
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2009
    Messages
    425
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2009
    Messages : 425
    Points : 275
    Points
    275
    Par défaut
    Ah ben oui j'suis bête ^^

    Merci bien !

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 11/09/2006, 12h22
  2. problème de ddénomination d'une variable
    Par baudmail dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 28/04/2006, 12h52
  3. Problème d'appels d'une variable entre fonctions
    Par julien.nasser dans le forum MFC
    Réponses: 12
    Dernier message: 26/04/2006, 09h23
  4. Problème de restitution d'une variable.
    Par flyflo dans le forum C++
    Réponses: 4
    Dernier message: 22/01/2006, 15h10
  5. Réponses: 1
    Dernier message: 21/12/2005, 19h08

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