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 :

DataSet - L'opération arithmétique a provoqué un dépassement de capacité


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 71
    Par défaut DataSet - L'opération arithmétique a provoqué un dépassement de capacité
    Bonjour,

    Voici le genre de nombre stockés dans une base de données que je tente de récupérer via un DataSet :

    1.21162790697674418604651162790697674419E01
    1.22195121951219512195121951219512195122E01
    1.20454545454545454545454545454545454546E01
    Que je passe par un DataReader reader => reader.Read()
    ou alors par un DataSet => Oadapter.Fill(Odsdata)

    j'obtiens l'erreur suivante :
    L'opération arithmétique a provoqué un dépassement de capacité.
    Quelqu'un aurait-il une solution?

    Merci.

  2. #2
    Membre confirmé

    Inscrit en
    Novembre 2007
    Messages
    197
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Novembre 2007
    Messages : 197
    Par défaut
    1.21162790697674418604651162790697674419E01
    Retour en notion de mathématique : 1.211E01 = 1.211 x 10 puissance 1, c'est à dire 1.211 ?

    1. Dans quel type ce champ est stocké dans ta BD (DOUBLE, DECIMAL) ?
    2. Dans quel type C# ta variable sera-t-elle stocké (float, double) ?

    Également il est important de savoir qu'une précision de seulement 15 à 16 chiffre après la virgule est possible via un double. Sinon je crois qu'il faut préférer decimal.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 71
    Par défaut
    Bonjour,

    J'ai le message d'erreur lors de la récupération, donc si c'est avec un DataSet, le message d'erreur survient à la ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Oadapter.Fill(Odsdata);
    Donc ici je n'essaie même pas de la stocker dans un float ou un autre type.

    Si j'utilise un DataReader, elle survient à la ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    float num = float.Parse(Odata[6].ToString());
    Cette valeur est stockée dans une BD Oracle, dans un champs de type NUMBER.

    Merci.

  4. #4
    Membre émérite
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2007
    Messages
    693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 693
    Par défaut
    Bonjour,

    Une piste serait de savoir comment sont créées ces valeurs. Par un programme C# ? Si oui, alors essaye d'avoir le code les manipulant. Ca te simplifiera la récupération.

    Sinon quand tu fais la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    float num = float.Parse(Odata[6].ToString());
    Essaye plutôt de récupérer un object. D'ailleurs quel est le type via un espion de Odata[6].

    Sinon il me semble qu'il existait dans la MSDN un tableau de correspondance entre type C# et type Oracle mais pas moyen de le retrouver.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 71
    Par défaut
    Bonjour,

    J'ai même essayé ceci pour ne pas passer par le .ToString() :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Decimal num = Convert.ToDecimal(Odata[6]);
    J'obtiens la même erreur.

    Lorsque je compile sans le mode debug, je vois dans ma console :

    Exception non gérée : System.OverflowException: L'opérateur arithmétique a provoqué un dépassement de capacité
    à Oracle.DataAccess.Types.DecimalConv.GetDecimal(IntPtr numCtx)
    à Oracle.DataAccess.Client.OracleDataReader.GetDecimal(Int32 i)
    à Oracle.DataAccess.Client.OracleDataReader.GetValue(Int32 i)
    à Oracle.DataAccess.Client.OracleDataReader.Get_Item(Int32 i)
    à replication_Oracle_MySql.Program.Main(String[] args) dans C:\...\Prgram.cs:ligne 437
    La ligne 437 étant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Decimal num = Convert.ToDecimal(Odata[6]);

    Si j'essaie d'afficher directement l'objet :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Console.WriteLine("La valeur est : \n " + Odata[6]);
    J'obtiens la même erreur m'indiquant cette ligne.

  6. #6
    Membre émérite
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2007
    Messages
    693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 693
    Par défaut
    Et sinon quel est le type de Odata[6] ?

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

Discussions similaires

  1. Réponses: 12
    Dernier message: 17/10/2014, 16h08
  2. Réponses: 1
    Dernier message: 02/11/2011, 17h18
  3. Réponses: 8
    Dernier message: 06/09/2011, 16h23
  4. Réponses: 1
    Dernier message: 22/12/2007, 15h14
  5. [VAL] Opérations arithmétiques
    Par WriteLN dans le forum Langage SQL
    Réponses: 2
    Dernier message: 12/05/2005, 09h59

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