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 :

probleme avec le remplisage d'une table


Sujet :

C#

  1. #1
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 61
    Par défaut probleme avec le remplisage d'une table
    bonjour,
    j'ai un grand probleme qui m'empêche de dormir
    quand j'utilise des petit chiffre (deux chiffres)ca marche, mais dés que que je mais un nombre qu'as plus que trois chiffres ca bug et j'ai ce message

    Code :


    Arithmetic overflow error converting float TO DATA type numeric.


    merci

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    on sait même pas de quoi tu parles !
    vu les noms des types je dirais que c'est une erreur SQL Server, mais si tu ne nous en dis pas un peu plus, on ne risque pas de pouvoir t'aider...

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    612
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 612
    Par défaut
    overflow => depassement de capacitè?

    exemple stocker 523 dans un champ qui accepte entre 0 et 256

  4. #4
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 61
    Par défaut
    merci donc je dois faire quoi pour résoudre ce probleme..

  5. #5
    Membre très actif Avatar de fally
    Homme Profil pro
    Développeur .Net / BI
    Inscrit en
    Novembre 2007
    Messages
    966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Développeur .Net / BI

    Informations forums :
    Inscription : Novembre 2007
    Messages : 966
    Par défaut
    cf. le post de tomlev

  6. #6
    Membre chevronné
    Homme Profil pro
    Développeur
    Inscrit en
    Juin 2006
    Messages
    645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Juin 2006
    Messages : 645
    Par défaut
    Citation Envoyé par haymen Voir le message
    merci donc je dois faire quoi pour résoudre ce probleme..
    Si tes nombres sont trop grands, tu peux envisager de les découper. Par exemple, si 202546 pose problème, tu peux utiliser 20, 25 puis 46.
    Sinon, tu peux essayer de préciser ta question en expliquant au minimum sur quoi tu travailles...

  7. #7
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 61
    Par défaut
    désolé je suis un peu radin pour les infos.
    en fait mon problème est le suivant,
    j'ai une base de donnée sur sql server, est je développe une application en C# , j'ai fais un programme qui me permet de remplir une table, quand je saisie un nombre de moins de 4 chiffre (452) le remplissage fonctionne, mais dés que je saisie un chifre supérieur a 4 nombre (45612) ca plante est j’ai ce message.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Arithmetic overflow error converting float TO DATA type numeric
    merci

  8. #8
    Membre chevronné
    Homme Profil pro
    Développeur
    Inscrit en
    Juin 2006
    Messages
    645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Juin 2006
    Messages : 645
    Par défaut
    Pour moi, tu as un problème de typage quelque part... Tu travailles sur un format de nombre qui ne dépasse pas les 4 chiffres.

    Où saisis-tu ce nombre ? Comment est-il traité ? A quel moment se produit l'erreur ? Dans quoi tu l'insères (script SQL de type "CREATE TABLE...") ?
    Avec ça, on commencera à avoir quelques éléments en main.

  9. #9
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 61
    Par défaut
    j epense que mon probléme vient du fait que le type de donnée de mes champs est flout..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    CREATE TABLE TST (
       [Loader Boot_Initial baseline_Size LOC] [float] NULL,
    	[Loader Boot_Last baseline_Size LOC] [float] NULL,
    	[Loader Boot_Change_Size(LOC)Added] [float] NULL,
    	[Loader Boot_Change_Size(LOC)Deleted] [float] NULL,
    	[Loader Boot_Change_Size(LOC)Modified] [float] NULL,
    	[Loader Boot_Change_Size(LOC)Total Change]  AS ((coalesce([Loader Boot_Change_Size(LOC)Added],(0))+coalesce([Loader Boot_Change_Size(LOC)Deleted],(0)))+coalesce([Loader Boot_Change_Size(LOC)Modified],(0))) PERSISTED,
    	[Loader Boot Effort Men*Days] [float] NULL
     )
    .

    MERCI

  10. #10
    Membre chevronné
    Homme Profil pro
    Développeur
    Inscrit en
    Juin 2006
    Messages
    645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Juin 2006
    Messages : 645
    Par défaut
    En 32 bits, les float sont compris entre -127 et 128. Donc forcément, 4 chiffres, ça coince.
    Mais tu as vraiment besoin de nombres à virgule ? Parce que, juste pour information, pour le même nombre de bits (32 donc), un entier peut aller :
    • de -2 147 483 648 à 2 147 483 647 (avec un bit de signe donc) ;
    • de 0 à 4 294 967 295 (non signé).
    Avoue qu'on peut en stocker "un peu" plus si on choisit le bon type

  11. #11
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 61
    Par défaut
    MERCI,
    j'ai choisi le type float car je travail souvant avec des nombres à virgule,

  12. #12
    Membre chevronné
    Homme Profil pro
    Développeur
    Inscrit en
    Juin 2006
    Messages
    645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Juin 2006
    Messages : 645
    Par défaut
    Quand tu dis souvent, c'est souvent dans ce cas là, ou souvent "en général" ?
    Parce que si tu n'en as pas besoin ici, tu peux passer tout de suite en entiers.

  13. #13
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 61
    Par défaut
    on va dire très souvent, donc je ne peut m'en passer...
    a tu une idée comment résoudre ce problème car ca fais 3 jour que je cherche sans résultat.

  14. #14
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par alband85 Voir le message
    En 32 bits, les float sont compris entre -127 et 128. Donc forcément, 4 chiffres, ça coince.
    hein ?!
    en float tu peux avoir des nombres de -1.79E308 à 1.79E308
    http://www.teratrax.com/sql_guide/da...ata_types.html
    Donc ça laisse de la marge

    Par contre, dans ton code C#, tu utilises quoi comme type ? Et à quel moment ce produit cette erreur ?

  15. #15
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 61
    Par défaut
    pour remplir la table je fais une requete parametrée,
    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
    22
     
     
                    // Chaîne de connexion
                    string connectString = @"Data Source=RENNDXPRDL2596\SQLEXPRESS;Initial Catalog=hafid;Integrated Security=True";
     
                    // Objet connection
                    SqlConnection connection = new SqlConnection(connectString);
                    // Ouverture
                    connection.Open();
                    SqlCommand command = new SqlCommand("INSERT INTO [table_test]([ID_tst],[1],[2],[3]) VALUES(@ID_tst,@1,@2....connection);
     
                    // Paramètre
     
                    command.Parameters.Add(new SqlParameter("@ID_tst", SqlDbType.NVarChar, 50));
                    command.Parameters.Add(new SqlParameter("@1", SqlDbType.Float))
                    command.Parameters.Add(new SqlParameter("@2", SqlDbType.Float))
     
     
     command.Parameters["@ID_tst"].Value = double.Parse(textBox_tst.Text, System.Globalization.CultureInfo.InvariantCulture);
     command.Parameters["@ID_1"].Value = double.Parse(textBox_1.Text, System.Globalization.CultureInfo.InvariantCulture);
     
     command.Parameters["@ID_2"].Value = double.Parse(textBox_2.Text, System.Globalization.CultureInfo.InvariantCulture);
    l'erreur ce produise quand je saisie dans le textbox un nombre grand ( 4 chofre). ca me fait la même chose quand je fais le saisie directement dans la base de donnée ( sql server 2005)
    merci

  16. #16
    Membre très actif Avatar de fally
    Homme Profil pro
    Développeur .Net / BI
    Inscrit en
    Novembre 2007
    Messages
    966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Développeur .Net / BI

    Informations forums :
    Inscription : Novembre 2007
    Messages : 966
    Par défaut
    Mets un breakpoint et vois sur quelle ligne se produit l'erreur!
    ps: les noms de tes paramètres sont pas tres fameux là

  17. #17
    Membre chevronné
    Homme Profil pro
    Développeur
    Inscrit en
    Juin 2006
    Messages
    645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Juin 2006
    Messages : 645
    Par défaut
    Citation Envoyé par tomlev Voir le message
    hein ?!
    en float tu peux avoir des nombres de -1.79E308 à 1.79E308
    http://www.teratrax.com/sql_guide/da...ata_types.html
    Donc ça laisse de la marge
    Au temps pour moi
    J'étais resté coincé sur la norme IEEE 7-quelque chose. Quelle idée aussi d'utiliser le même nom pour appeler des choses différentes
    Bon, ben finalement, j'ai pas la solution

  18. #18
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    bizarre cette requête... déjà tu n'insères pas dans la table dont tu as donné le create table, et c'est quoi ce "....connection" ?

  19. #19
    Membre expérimenté
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Par défaut
    As tu deja verifié le type effectivement créé dans ta base ?

  20. #20
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 61
    Par défaut
    bonjour,
    on m 'as dit que c'est mieux d'utilisé des type Decimal.
    j'ai un probleme c'est que quand je saisie 12.2 il me l'arondi a 13.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    command.Parameters.Add(new SqlParameter("@test", SqlDbType.Decimal));
     
    if (textBox1.Text != "")
                    {
                        command.Parameters["@test"].Value = Decimal.Parse(textBox_Duration_Estimate_PH_0.Text, System.Globalization.CultureInfo.InvariantCulture);
                    }
                    else command.Parameters["@1"].Value = System.DBNull.Value;
    merci

Discussions similaires

  1. probleme avec le remplisage d'une table
    Par haymen dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 14/08/2008, 01h28
  2. Réponses: 5
    Dernier message: 08/04/2008, 09h54
  3. problem avec la recherche d'une valeur dans les table
    Par anilane dans le forum Bases de données
    Réponses: 6
    Dernier message: 25/05/2007, 19h35
  4. MySQL - Probleme avec 2 index sur une table
    Par xG-Hannibal dans le forum Outils
    Réponses: 7
    Dernier message: 31/03/2006, 14h08
  5. Réponses: 8
    Dernier message: 13/08/2004, 12h32

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