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

Accès aux données Discussion :

[C#] Recupération d'un decimal dans un DataReader


Sujet :

Accès aux données

  1. #1
    Nouveau membre du Club
    Inscrit en
    Avril 2004
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 38
    Points : 37
    Points
    37
    Par défaut [C#] Recupération d'un decimal dans un DataReader
    bonjour,

    voici mon problème:

    System.InvalidCastException: La valeur des données n'a pas pu être convertie pour des raisons autres que l'incompatibilité de signe ou le dépassement de données. Par exemple, les données étaient endommagées dans le magasin de données mais la ligne pouvait toujours être extraite.
    at System.Data.OleDb.DBBindings.get_ValueDecimal()
    at System.Data.OleDb.OleDbDataReader.GetDecimal(Int32 ordinal)
    une erreur qui survient lorsque je veux recuperer un decimal contenu dans une colonne d'un datareader...

    c'est la première fois que j'utilise un datareader et là....
    je bloque un poil

    Voici le bout de code qui génère cette erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Formule.AjouterElement(new ClassElementFormule(reader.GetString(4),reader.GetString(5),TypeProduit.MP,
    reader.GetDecimal(3),reader.GetString(6),reader.GetDecimal(7),reader.GetDecimal(8),reader.GetDecimal(9),
    reader.GetDecimal(10),reader.GetString(11),reader.GetString(12),reader.GetString(13),reader.GetDecimal(14),
    reader.GetDecimal(15),reader.GetDecimal(16),reader.GetDecimal(17),reader.GetString(18)), Formule.NbElt()-1);
    merci de votre aide
    Mais...Mais... C'est quoi ce bordel !!!
    j'etais a la recherche d'ecole en info. Mais je n'ai rien trouvé de tres concluant alors je sais po quoi faire... J'ai un DUT info et bcp d'ambitions...Vous auriez po un ptit boulot

  2. #2
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Par datareader, tu veux dire SqlDataReader :

    Si oui, essaye d'utiliser :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    reader.GetSqlValue()

    Il m'est arrivé de ne pas réussir à récupérer le contenu d'une colonne, si je n'utilisais pas cela (alors que je devais juste récupérer du texte...) : Sait-on jamais

  3. #3
    Nouveau membre du Club
    Inscrit en
    Avril 2004
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 38
    Points : 37
    Points
    37
    Par défaut
    argh...
    ben non datareader tt simplement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    command.CommandText = Req4;
    reader = command.ExecuteReader();
    while(reader.Read())
    {
    Formule.AjouterElement(new ClassElementFormule(reader.GetString(3),reader.GetString(4),TypeProduit.P,
    reader.GetDecimal(2)),Formule.NbElt()-1);
    }
    j'utilise un datareader tt ce qui y'a de plus normal et en fait il me fait l'erreur pour tous les decimal je vais essayer en utilisant getstring() et en convertissant apres avec convert.todecimal()
    Mais...Mais... C'est quoi ce bordel !!!
    j'etais a la recherche d'ecole en info. Mais je n'ai rien trouvé de tres concluant alors je sais po quoi faire... J'ai un DUT info et bcp d'ambitions...Vous auriez po un ptit boulot

  4. #4
    Nouveau membre du Club
    Inscrit en
    Avril 2004
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 38
    Points : 37
    Points
    37
    Par défaut
    le probleme ne vient pas des decimal puisque ca plante pareil quand je le recupere en string puis que je le converti...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    System.InvalidCastException: La valeur des données n'a pas pu être convertie pour des raisons autres que l'incompatibilité de signe ou le dépassement de données. Par exemple, les données étaient endommagées dans le magasin de données mais la ligne pouvait toujours être extraite.
       at System.Data.OleDb.DBBindings.get_ValueString()
       at System.Data.OleDb.OleDbDataReader.GetString(Int32 ordinal)
    Mais...Mais... C'est quoi ce bordel !!!
    j'etais a la recherche d'ecole en info. Mais je n'ai rien trouvé de tres concluant alors je sais po quoi faire... J'ai un DUT info et bcp d'ambitions...Vous auriez po un ptit boulot

  5. #5
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    command.CommandText = Req4;
    reader = command.ExecuteReader();
    Ca, c'est utilisé pour du SQL en C# donc ton datareader, c'est un SqlDataReader.....

    Tu as essayé ce que j'ai suggéré ?

  6. #6
    Nouveau membre du Club
    Inscrit en
    Avril 2004
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 38
    Points : 37
    Points
    37
    Par défaut
    reader.GetSqlValue() n'est pas disponible...

    je ne vois pas de methode getsqlvalue() pour mon reader
    Mais...Mais... C'est quoi ce bordel !!!
    j'etais a la recherche d'ecole en info. Mais je n'ai rien trouvé de tres concluant alors je sais po quoi faire... J'ai un DUT info et bcp d'ambitions...Vous auriez po un ptit boulot

  7. #7
    Nouveau membre du Club
    Inscrit en
    Avril 2004
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 38
    Points : 37
    Points
    37
    Par défaut
    bon j'ai essayer comme ca:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    reader.GetValue(num_colonne).ToString();
    Convert.ToDecimal(reader.GetValue(num_colone));
    ca a l'air de marcher...
    Mais...Mais... C'est quoi ce bordel !!!
    j'etais a la recherche d'ecole en info. Mais je n'ai rien trouvé de tres concluant alors je sais po quoi faire... J'ai un DUT info et bcp d'ambitions...Vous auriez po un ptit boulot

  8. #8
    Membre chevronné
    Avatar de Piotrek
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 869
    Points : 1 904
    Points
    1 904
    Par défaut
    Bah c'est pas beau

    je suis aussi tombe sur cette erreur tout au debut de mon experience .net... et je me rapelle plus comment j'ai fait

    t'est certain que la donnee lue est bien du decimal? fais un debug.write (OleDbDataReader.GetDataTypeName) pr voir

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

Discussions similaires

  1. Recupération champs Decimal dans DB2
    Par Job dans le forum C#
    Réponses: 2
    Dernier message: 31/05/2012, 13h41
  2. Réponses: 4
    Dernier message: 23/07/2006, 20h42
  3. compl. nombre decimal dans une requete insert
    Par loic72 dans le forum Access
    Réponses: 2
    Dernier message: 31/05/2006, 11h43
  4. Réponses: 4
    Dernier message: 20/04/2006, 00h34
  5. [C#]saisir que un nombre decimal dans 1 textBox
    Par mcay dans le forum Windows Forms
    Réponses: 25
    Dernier message: 04/11/2005, 15h43

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